鱼C论坛

 找回密码
 立即注册
查看: 4278|回复: 11

怎样在两个被调函数中传递数据

[复制链接]
发表于 2012-3-11 09:12:43 | 显示全部楼层 |阅读模式
1鱼币
比如,我写了数组,调用了查找某项,设是第i个,在删或修改它,在这个步骤里仍需要i这样数对吧,怎样做呢。我用文件写的~然后,修改怎么写。。
总是提示i,b没有声明
下面是我的代码。。
int name_search()
{
char name[20];
int i;
int b;
printf("输入姓名:");
scanf("%s",&name);
for(i=0;i<num;i++)
{
  if(strcmp(person[i].name,name)==0)
   return b;
}
return 0;
}

int deleteuser()
{
int b;
char n;
int i;//怎样在两个被调函数里交换数据
b=name_search();
if(b=1)
{
  if((fp=fopen("通讯录.txt","r"))!=NULL)
   printf("是否确定要删除该项?是y,否n\n");
  scanf("%s",&n);
  if(n=='y')
  {
   for(i=i;i<num-1;i++)//怎样在两个被调函数里交换数据
    person[i]=person[i+1];
   num--;
  }
  if(n=='n')
   return 0;
}
if(b=0)
  printf("没有该联系人!");
return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-3-11 09:12:44 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <string.h>

  3. #define MAX_LEN 10
  4. #define TOTAL_NUM 4
  5. struct Person{
  6.         char name[MAX_LEN];
  7.         int salary;
  8. };
  9. void display( struct Person* pvec, int n );
  10. int name_search( struct Person* pvec, int n, char* search_name );
  11. void delete_user(struct Person* pvec, int n, int to_be_deleted );

  12. int main(){
  13.         struct Person persons[TOTAL_NUM] = {
  14.                 {"张三",100},{"李四",300},{"王五",200},{"马六",900}
  15.         };
  16.         char search_name[MAX_LEN];
  17.         int find=-1;
  18.         display( persons, TOTAL_NUM );
  19.         printf("Input the name to be delete");
  20.         scanf("%s",search_name);
  21.         find = name_search( persons, TOTAL_NUM, search_name );
  22.         if( find != -1 ) {
  23.                 delete_user( persons, TOTAL_NUM, find );
  24.                 display( persons, TOTAL_NUM-1 );
  25.         }else{
  26.                 printf("No such a person\n");
  27.         }
  28. }

  29. void display( struct Person* pvec, int n ){
  30.         int i;
  31.         for(i=0;i<n;++i){
  32.                 printf("name:%s\tsalary:%d\n",pvec[i].name,pvec[i].salary);
  33.         }
  34. }
  35. int name_search( struct Person* pvec, int n, char* search_name ){
  36.         int result=-1;
  37.         int i;
  38.         for(i=0;i<n;++i){
  39.                 if( strcmp(pvec[i].name, search_name) == 0 )
  40.                         return i;
  41.         }
  42.         return result;
  43. }
  44. void delete_user(struct Person* pvec, int n, int to_be_deleted ) {
  45.         int i = to_be_deleted+1;
  46.         for(;i<TOTAL_NUM;++i){
  47.                 pvec[i-1]=pvec[i];
  48.         }
  49. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-11 10:43:45 | 显示全部楼层
用参数传递咯。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-11 10:46:27 | 显示全部楼层
而且你两个函数都有问题,第一个:b只声明无赋值就return 了??
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-11 10:47:12 | 显示全部楼层
第一个也是,n,i声明但又无赋值?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-11 10:47:37 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-11 10:48:21 | 显示全部楼层
晕,又回复错了。。,第一个:b只声明无赋值就return 了??第二个也是,n,i声明但又无赋值?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-11 10:49:24 | 显示全部楼层
:@我已经气死了。。。刚看错了,第二个没问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-11 14:54:59 | 显示全部楼层
学习了            
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-12 23:05:42 | 显示全部楼层
想清楚文件基本操作后
想数据怎么存 才可以添加删除修改
有好几种方式 数组 链表 哈希表 树
我C学得时候用数组
现在觉得哈希表比较好
等数据结构学完 又要用树 想想在文件中怎么样实现这些数据结构
然后操作
肯定变长 添加也要重复利用
不是那么简单的 随随便便写出个完美的 不然我学费4000 3月不是打水漂了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-13 19:27:51 | 显示全部楼层
ccqiji 发表于 2012-3-12 23:05
想清楚文件基本操作后
想数据怎么存 才可以添加删除修改
有好几种方式 数组 链表 哈希表 树

没有完美的技术,任何技术都有优点和缺点。做工程的原则是够用就行。否则按照你说的什么存储结构都不要学了,都用数据库就好了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-6 15:28:05 | 显示全部楼层
长长见识。。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-12 00:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表