為什么scanf函數(shù)只讀到字符串的空格鍵為止,而printf函數(shù)卻一直輸出到最后;比如:輸入同樣的字符串 abc asdcnd dasdsascanf只讀到abc;而對于printf函數(shù)會把abc asdcnd dasdsa輸出;請問這是為什么?它們區(qū)分字符串結(jié)束標志有什么區(qū)別嗎?#include <stdio.h>int main(){ char string[100]={}; scanf("%s",string); printf("NO.1 %s\n",string); gets(string); printf("NO.2 %s\n",string); printf("C=%c,d=%d\n",string[10],string[10]); printf("C=%c,d=%d\n",string[0],string[0]); printf("C=%c,d=%d\n",string[5],string[5]); return 0;}結(jié)果:如下圖所示。
2 回答

qq_遁去的一_1
TA貢獻1725條經(jīng)驗 獲得超8個贊
你說的問題出現(xiàn)在輸入函數(shù)上。
因為用scanf()輸入時,默認用空格作為輸入分隔符。所以,當用scanf輸入字符串時,碰到空格,就停止讀入。因此,它不能用于含有空格的字符串的輸入。
用gets()輸入時,就不存在這個問題,它把回車前的所有字符(包括空格)都作為字符串的內(nèi)容了。
使用時要特別注意這一點。

叮當貓咪
TA貢獻1776條經(jīng)驗 獲得超12個贊
scanf函數(shù)只讀到字符串的空格鍵和回車為止, 其實也可以讀到你指定的字符中止, 只是不是用s%
也可以用gets函數(shù)讀取輸入, 到回車為止, 可以讀入空格
輸出字符串以'\0'結(jié)尾, 不是以空格或回車結(jié)尾
- 2 回答
- 0 關(guān)注
- 449 瀏覽
添加回答
舉報
0/150
提交
取消