C:从函数输入数据后无法访问main中的结构体数据



我是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 * 40100大得多.

最新更新