方法一:scanf 讀入 char[]
char cr[1024];
scanf("%[^\n]",&cr);//以換行結(jié)束
getchar();
說明:在scanf函數(shù)中回官,可以使用%c來讀取一個字符母谎,使用%s讀取一個字符串, 但是讀取字符串時不忽略空格慨蓝,讀字符串時忽略開始的空格,并且讀到空格為止竹伸,因此只能讀取一個單詞泥栖,而不是整行字符串。
其實scanf函數(shù)也可完成這樣的功能勋篓,而且還更強大吧享。這里主要介紹一個參數(shù),%[ ]譬嚣,這個參數(shù)的意義是讀入一個字符集合钢颂。[ ]是個集合的標(biāo)志,因此%[ ]特指讀入此集合所限定的那些字符,比如%[A-Z]是輸入大寫字母拜银,一旦遇到不在此集合的字符便停止殊鞭。如果集合的第一個字符是""遭垛,這說明讀取不在""后面集合的字符,既遇到"^"后面集合的字符便停止操灿。注意此時讀入的字符串是可以含有空格的锯仪,而且會把開頭的空格也讀進來。
注意:如果要循環(huán)的多次從屏幕上讀取一行的話趾盐,就要在讀取一行后庶喜,再用%c讀取一個字符,將輸入緩沖區(qū)中的換行符給讀出來救鲤。否則的話久窟,在下一次讀取一行的時候,第一個就遇到'\n'蜒简,匹配不成功就直接返回了瘸羡。這里可以用 scanf("%c",&c) 或者 getchar() 函數(shù)讀取換行符。
方法二:getchar()讀入 char[]
char cr[1024];
int i = 0;
while((cr[i] = getchar()) != '\n')
i++;
getchar();
說明:這樣一個一個讀也可以搓茬,也會把開頭的空格讀入。最后也需要考慮換行符队他,使用getchar()讀出來卷仑。
方法三:gets() 讀入 char[]
char cr[1024];
gets(cr);
說明:感覺這個就是多個getchar的集合函數(shù),很好用麸折。功能是從標(biāo)準(zhǔn)輸入鍵盤上讀入一個完整的行(從標(biāo)準(zhǔn)輸入讀锡凝,一直讀到遇到換行符),把讀到的內(nèi)容存入括號中指定的字符數(shù)組里垢啼,并用空字符'\0'取代行尾的換行符'\n'窜锯。讀入時不需要考慮換行符。
方法四:getline() 讀入string 或 char[]
int n;
string str;
//cin>>n;
//cin.ingore();清除以回車結(jié)束的輸入緩沖區(qū)的內(nèi)容芭析,不加這句后面的getline()則不起作用
getline(cin,str);//讀入string
char cr[1024];
cin.getline(cr,1024);//讀入char數(shù)組
說明:這是比較常用的方法锚扎,cin.getline第三個參數(shù)表示間隔符,默認為換行符'\n'馁启。讀入不需要考慮最后的換行符驾孔。
方法五:get() 讀入 char[]
char cr[1024];
cin.get(cr,1024);//讀入char數(shù)組
說明:get函數(shù)讀入時需要考慮最后的換行符,也就是說惯疙,如果用get讀入多行數(shù)據(jù)翠勉,要把'\n'另外讀出來,一般使用cin.get(str,1024).get();來讀入多組數(shù)據(jù)霉颠。