我在這裏輸入示例101-Name-3.4但不輸入3.4。它沒有顯示在輸出中。我該如何解決這個問題?我怎樣才能得到我在C中的最後輸入(浮點數據)?
for(i=0; i<n; ++i){
printf("Enter ID-Name-CGPA receptively: ");
scanf("%lld-%[^-]s-%f", id[i], name[i], cgpa[i]);
}
我在這裏輸入示例101-Name-3.4但不輸入3.4。它沒有顯示在輸出中。我該如何解決這個問題?我怎樣才能得到我在C中的最後輸入(浮點數據)?
for(i=0; i<n; ++i){
printf("Enter ID-Name-CGPA receptively: ");
scanf("%lld-%[^-]s-%f", id[i], name[i], cgpa[i]);
}
您需要從掃描集指令刪除後s
格式字符串:
scanf("%lld-%[^-]-%f", id[i], name[i], cgpa[i]);
的s
不是掃描集指令的一部分,所以scanf()
嘗試和失敗,以匹配輸入中的s
。如果代碼正在檢查呼叫的返回值scanf()
,這可以被檢測到,這總是一個很好的做法。
此外,沒有聲明被示出,但如果id[]
被聲明爲的long long int
秒的陣列,並且cgpa[]
被聲明爲的float
秒的陣列,則該地址操作者應使用:
int ret_val = scanf("%lld-%[^-]s-%f", &id[i], name[i], &cgpa[i]);
/* ret_val should be 3 */
@ AbdullahAlmasud--未接受?什麼改變了?有什麼方法可以幫我改進我的答案嗎?我希望這不是關於被拒絕的編輯;這是社區,而不是我,我給出了不立即接受你提議的編輯的原因,並解釋了你如何修改你的問題,以便我接受你的編輯。 –
這是'id'?什麼是'名稱'?什麼是'cgpa'?你可以請出示他們的聲明嗎? –
此外''%[「''格式說明符不*以*結尾。也許[這個'scanf'(和家庭)參考](http://en.cppreference.com/w/c/io/fscanf)可能有助於閱讀? –
從'%[^ - ] s'中刪除's'。 (也許'scanf(「%lld - %[^ - ] - %f」,&id [i],name [i],&cgpa [i]);') – BLUEPIXY