char *S_i[n];
int e_i[n];
for(i=0;i<n;i++){
scanf("%s %d",&S_i[i],&e_i[i]);
}
上面是想輸入幾個字串,但之後用下面的
for(i=0;i<n;i++){
if(e_i[i]==3)
printf("%s %d",S_i[i],e_i[i]);
printf("\n");
}
卻沒辦法成功輸出,輸出指令應該是沒錯(嗎?),問題是不太知道要如何輸入
其他變數和程式都沒有漏,沒問題
網上找的都是在宣告變數的時候已經設定字串内容
請問一下怎樣才能在scanf輸入多個字串
謝謝
char *S_i[n];
int e_i[n];
for(i=0;i<n;i++){
scanf("%s %d",&S_i[i],&e_i[i]);
}
儲存字串的地方沒有做記憶體分配...scanf給的位置也不是正常的。
真的要得話scanf
應該也是這樣寫
// scanf("%s %d",&S_i[i],&e_i[i]);
scanf("%s %d",S_i[i],&e_i[i]);
甚至如果理解scanf
的運作的話(沒做flush
的話stdin
還是有字元在),還可以這樣寫:
scanf("%s", S_i[i]);
scanf("%d", &e_i[i]);
甚至更好的處理方式應該會類似(假定buffer size爲5):
scanf("%4s", S_i[i]);
scanf("%d", &e_i[i]);
所以:
#define n 3
char S_i[n][5] = {"aaaa", "bbbb", "cccc"}; // 初始化buffers
int e_i[n];
for(int i=0;i<n;i++){
//scanf("%s %d",&S_i[i],&e_i[i]);
scanf("%4s", S_i[i]); // get string, or use `fgets`
scanf("%d", &e_i[i]); // get integer
}
input:
aaaa 3
bbb 3
cc 3
去做
malloc
和remalloc
會彈性,但要記得free
。忘記的話還蠻危險的。
又是開學一陣子了....
https://stackoverflow.com/questions/1412513/getting-multiple-values-with-scanf
你有一行
if(e_i[i]==3)
先不要用這行.