程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言語句輸入問題-c語言中當字符串和整形數據一起的時候應該怎樣輸入?

c語言語句輸入問題-c語言中當字符串和整形數據一起的時候應該怎樣輸入?

編輯:編程綜合問答
c語言中當字符串和整形數據一起的時候應該怎樣輸入?

比如說我想在結構體中輸入:
#include
struct score
{
int num;
char c[6];
int M;
int E;
int Chi;
int P;
int Che;
int sum;
};
void main()
{
struct score student[3];
int i;
for(i=0;i<3;i++)
{
scanf("%d%c%d%d%d%d%d",&student[i].num,&student[i].M,&student[i].E,&student[i].Chi,&student[i].P,&student[i].Che);
student[i].sum=student[i].M+student[i].E+student[i].Chi+student[i].P+student[i].Che;
}
for(i=0;i<3;i++)
printf("num=%d\tM=%d\tE=%d\tChi=%d\tP=%d\tChe=%d\tsum=%d\t",student[i].num,student[i].M,student[i].E,student[i].Chi,student[i].P,student[i].Che,student[i].sum);
}

我的輸入語句【scanf("%d%c%d%d%d%d%d",&student[i].num,&student[i].M,&student[i].E,&student[i].Chi,&student[i].P,&student[i].Che);
】在執行的時候,只能輸入一次,且結果是隨機數,這是怎麼回事?
我應該怎樣改會方便輸入?

最佳回答:


存在如下問題:
1. 我看不到你include的頭文件,想必是stdio.h吧。
2. student這個數組未進行初始化,所以在一開始這個數組中各個成員的各個域具有一個不定的初始化值
3. scanf的時候,第二個參數指定%c,但是他是整形,所以只取用了4個字節中的低位字節進行賦值,在BigEnding和LittleEnding的機器上將具有不同的結果,但是都會錯:這一個接收了輸入的字節加上另外三個具有不確定值的字節,一般來說,你或者會得到一個很大的值,或者得到一個負值
4.同樣的,scanf的地方,格式字串中指定了7個參數,但你只用了6個來接受,所有最後一個輸入完全沒有意義
5.因為sum是加出來的,所以最後不但M,而且SUM都會出錯.
6.然後,建議你輸出的時候,每一個成員按一行輸出,這樣會比較容易觀察.另外,從你system("pause");這一行代碼來看,你是在windows上完成的吧...
最後,提出一點建議:命名,編碼最好改進一下;再有就是你定義的這個數組最好考慮到字節對齊的問題.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved