c语言的结构问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 13:40:06
#include "stdio.h"
#include "string.h"
#define N 5
typedef struct
{char name[10];char num[10];}USER;
main()
{
USER sp[N];
getwords(sp);
/* getsorts(sp);
getprint(sp); */
}

getwords(sp)
USER *sp[];
{int i;
for(i=0;i<5;i++)
{printf("\nimput name: ");
gets(sp[i]->name);
printf("%s",sp[i]->name);
printf("\nimput num: ");
gets(sp[i]->num);
printf("%s",sp[i]->num);
}
}

当我运行这个程序的时候,为什么当我输入完name后,他的输出永远是null??输入num又可以正确现实??
还有为什么我用 sp[i].num 这种表达的时候会报错??
谢谢啦~

你这个程序可以运行?!
1.如果定义函数在main()函数之后,在main()中调用它之前要先声明.
2.定义函数的语法:
函数类型 函数名(形式参数)
{函数体}
getwords(sp)
USER *sp[]; 是什么?
从你的编程意图来看,函数的作用是输入name和num,并输出.那么这个函数就不需要参数.(sp)就没必要了.
需要的是引用类型参数,在c语言中没有.但指针可以实现传回该值.所以,参数为USER *sp[];
3.参数改了,调用的时候也改.实参为结构体数组指针.
USER *sp[N];
getwords(sp);
4.想要循环输入N个,for循环的5改为N
6.修改后的程序:
#include "stdio.h"
#include "string.h"
#define N 5
typedef struct
{char name[10];char num[10];}USER;

void getwords(USER *sp[])
{int i;
for(i=0;i<5;i++)
{printf("\nimput name: ");
gets(sp[i]->name);
printf("%s",sp[i]->name);
printf("\nimput num: ");
gets(sp[i]->num);
printf("%s",sp[i]->num);
}
}

main()
{
USER *sp[N];
getwords(sp);
/* getsorts(sp);
getprint(sp); */
}

你的问题答案:
1.