我是C程序的新手,我正在使用带有数组变量的结构来包含我的数据集。但是,在我向结构体输入一组数据并想打印主函数上列出的数据后,它向我显示一些未知单词或空。那么,如何从结构体访问主函数或其他函数中的数据?我做错了什么吗?这是代码。对此有什么建议吗?提前感谢!
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include<ctype.h>
struct Team{
char tem[40];
char proj[40];
char leader[40];
char mem1[40];
char mem2[40];
char mem3[40];
};
void project_team(struct Team arr[5]){
char str[100];
printf("Enter> ");
scanf("%[^n]s",str); //%[^n]s can input string including space
sscanf( str, "%s %s %s %s %s %s",arr[0].tem,arr[0].proj,arr[0].leader,arr[0].mem1,arr[0].mem2,arr[0].mem3); //conver user input string to words and store in struct variable separately
printf("show: %s %s %s %s %s %s n",arr[0].tem,arr[0].proj,arr[0].leader,arr[0].mem1,arr[0].mem2,arr[0].mem3);
}
int main(int argc, char *argv[]){
struct Team arr[5];
project_team( &arr[5] );
printf("showthis: %s %s %s %s %s %s n",arr[0].tem,arr[0].proj,arr[0].leader,arr[0].mem1,arr[0].mem2,arr[0].mem3);
return 0;
}
我输入后:
进入>团队A 项目A 艾米·凯尔文 范妮·杰基
它显示:
showthis:/usr/lib/dyld bx *
我期望展示的内容:
显示这个: 团队A 项目A 艾米·凯尔文 范妮·杰基
在此调用中:
project_team( &arr[5] );
您将在数组的最后一个元素之后传递内存地址。
你需要写:
project_team( arr );
在这个 scanf 的调用中:
scanf("%[^n]s",str);
从格式字符串中删除字符's'
:
scanf(" %[^n]",str);
写起来会更安全:
scanf(" %99[^n]",str);
请注意,该结构有 6 个字符的数组,每个数组中有 40 个字符。很明显,6 * 40
比100
大得多.