為什么scanf函數(shù)只讀到字符串的空格鍵為止,而printf函數(shù)卻一直輸出到最后;比如:輸入同樣的字符串 abc asdcnd dasdsascanf只讀到abc;而對(duì)于printf函數(shù)會(huì)把a(bǔ)bc asdcnd dasdsa輸出;請(qǐng)問這是為什么?它們區(qū)分字符串結(jié)束標(biāo)志有什么區(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貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
你說的問題出現(xiàn)在輸入函數(shù)上。
因?yàn)橛胹canf()輸入時(shí),默認(rèn)用空格作為輸入分隔符。所以,當(dāng)用scanf輸入字符串時(shí),碰到空格,就停止讀入。因此,它不能用于含有空格的字符串的輸入。
用gets()輸入時(shí),就不存在這個(gè)問題,它把回車前的所有字符(包括空格)都作為字符串的內(nèi)容了。
使用時(shí)要特別注意這一點(diǎn)。

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