其實用C用了幾年了,大多數是單片機C語言。C語言的好書也看過幾本,但是感覺對C精通還得走很長的路。從C和指針開始,從博客開始,堅持把這本書的每道題都做一遍思考一遍,不管再簡單的語句也要敲一敲,覺得重要的,經常遺忘的也寫下來。
#define MAX_INPUT 100UL
void main()
{
int quantity,price;
unsigned char department[MAX_INPUT]=" ";
scanf("%d,%d,%s",&quantity,&price,&department);//note that , is needed when input from keyboard,if there is no ',',then ','is not needed(space enter to
//scanf("%s",&department);//seperate the adjacent characters
printf("%d,%d,%s \n",quantity,price,department);
//printf("%s\n",department);
}
說實話,除了大一時經常用到scanf,以後幾乎就沒用到了。scanf是從標準輸入流stdin(標準輸入設備,一般是鍵盤)中讀取內容的通用子程序,可以依次讀取多個字符,並保存在對應地址變量中。
scanf("%d%d",&a,&b);
1 如果ab都成功讀入,返回值就是2,;
2 只讀取一個,返回值是1;
3 都沒有讀取,返回值0;
4 如果遇到錯誤或者end of file,返回值爲EOF;
scanf("%d,%d,%s",&quantity,&price,&department);注意如果格式控制符項之間有逗號的話,鍵盤輸入時要用 逗號 隔開,如果沒有逗號,輸入時用 空格,回車鍵或tab鍵隔開。
我調試時遇到一個很奇怪的問題,字符串讀不進來。前兩個quantity和price可以正常讀入並打印。後來發現,我的輸入法默認是中文,在輸入數字時,中文狀態的逗號會被自動變爲半角字符逗號,這個我是注意到了,但是在輸入字符前的逗號沒有變爲半角字符逗號,而且此時字符前多出了一個空格,要知道如果scanf遇到空格會認爲賦值結束的。這就是問題所在。在輸入前切換到英文輸入法,就沒有這個問題了。還發現,如果連續輸入數字,逗號會自動變爲半角字符逗號。