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

C: Can not access the struct data in main after enter data from function

我是 C 程序的新手,我正在使用带有数组变量的结构来包含我的数据集。但是,在我向结构体输入一组数据并想要打印主函数中设置的数据后,它显示了一些未知的词或 empty.SO,我如何才能访问主函数或中的数据结构中的其他功能?我做错什么了吗?这是代码。有什么建议吗?提前致谢!

#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;
}

我输入后:

Enter> TeamA ProjectA Amy Kelvin Fanny Jacky

它显示:

showthis: /usr/lib/dyld � �bx�� *

我希望展示的内容:

showthis: TeamA ProjectA Amy Kelvin Fanny Jacky

在这次通话中:

project_team( &arr[5] );

您正在传递数组最后一个元素之后的内存地址。

你需要写:

project_team( arr );

在scanf的这个调用中:

scanf("%[^\n]s",str);

从格式字符串中删除字符 's':

scanf(" %[^\n]",str);

这样写会更安全:

scanf(" %99[^\n]",str);

注意结构有6个字符数组,每个数组40个字符。很明显 6 * 40100 大得多。