我是 C 程式的新手,我正在使用帶有陣列變數的結構來包含我的資料集。但是,在我將一組資料輸入到結構并想要列印在主函式上設定的資料后,它向我顯示了一些未知單詞或空的內容。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;
}
我輸入后:
進入> TeamA ProjectA Amy Kelvin Fanny Jacky
它顯示:
showthis:/usr/lib/dyld ???bx?? *
我希望展示的內容:
showthis: TeamA ProjectA Amy Kelvin 范妮杰基
uj5u.com熱心網友回復:
在這次通話中
project_team( &arr[5] );
您在陣列的最后一個元素之后傳遞記憶體地址。
你需要寫
project_team( arr );
在這個 scanf 呼叫中
scanf("%[^\n]s",str);
's'從格式字串中洗掉字符
scanf(" %[^\n]",str);
寫起來會更安全
scanf("
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456443.html
