3 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
1、空白符問題
#include<stdio.h>
main()
{
int a;
printf("input the data ");
scanf("%d ",&a);//這里多了一個(gè)回車符
printf("%d",a);
return 0;
}
2、回車符也占位。
#include <stdio.h>
main()
{
int n = 5;
char c[n];
for(int i = 0; i < n; i++)
c[i] = scanf("%c",&c[i]);
printf(c);
return 0;
}
3、scanf()函數(shù)的參數(shù)輸入類型不匹配問題
#include<stdio.h>
main()
{
int a=123;
char c='t';
printf("input ");
scanf("%d%c",&a,&c);
scanf("%d%c",&a,&c);
scanf("%d%c",&a,&c);
printf("%d %c ",a,c);
return 0;
}
擴(kuò)展資料:
scanf函數(shù)用%s讀取一個(gè)字符串時(shí),其實(shí)它只能讀取一個(gè)單詞,因?yàn)橛龅娇崭駮r(shí),它會(huì)認(rèn)為輸入已結(jié)束。因此一般使用fgets來讀取一個(gè)字符串。如果想用scanf函數(shù)讀取帶有空格的字符串時(shí),需要使用參數(shù)%[ ]來完成,它的意思是讀入一個(gè)字符集合。
[ ]是個(gè)集合的標(biāo)志,%[ ]特指讀入此集合所限定的那些字符,比如%[A-Z]是輸入大寫字母,一旦遇到不在此集合的字符便停止。如果集合的第一個(gè)字符是“^”,這說明讀取不在"^"后面集合的字符,既遇到"^"后面集合的字符便停止(這就是scanf函數(shù)里的正則表達(dá)式應(yīng)用)。
添加回答
舉報(bào)