字串輸入函式的若干不同

2021-06-28 08:45:15 字數 1202 閱讀 7248

最近在寫程式的時候,發現雖然使用的是一樣的輸入,但是最後末尾結束的判別條件卻千差萬別。程式如下,輸入的時候都使用的是:hello+回車

#include"stdio.h"

#include"string.h"

#include"conio.h"

#define n 100

int main(int argc, char* argv)

} printf_s("\ngetchar:");

for (int i = 0; i < n; i++) }

printf_s("\ngets:");

gets_s(str3);

printf_s("\nscanf:");

scanf_s("%s", str4, n);

return 0;

}

結果如下圖: 

而每個字元陣列中的元素如下圖所示:

很明顯當使用scanf()和get()作為錄入的時候,當按下回車鍵之後,末尾都自動以'\0'自動結束,並認為此字串輸入完畢。

而當使用getch()和getchar()卻不以回車鍵而結束,相反,回車作為乙個字元存入了該字串。

雖說都是回車,明顯可以看出使用getch()的回車字元為'\r',getchar()的回車字元為'\n'。

'\r' 的'\n'的區別,網上是這麼說的:

\r:回車符,返回到這一行的開頭,return的意思。

\n:換行符,到下一行的同一位置,縱座標相同,new line的意思。

scanf與get的區別,網上是這麼說的:

scanf :當遇到回車,空格和tab鍵會自動在字串後面新增'\0',但是回車,空格和tab鍵仍會留在輸入的緩衝區中。(注:會影響到下次字元的輸入)

gets:   可接受回車鍵之前輸入的所有字元,並用'\0'替代 '\n',回車鍵不會留在輸入緩衝區中。

嗯,發個博文,做個標記,下次遇到就不會像現在這麼鬱悶了。

字串相關的若干輸入方式

c和c 在字串型別上有差異,c雖然有標頭檔案,但並無string型別,只能通過char陣列來表示字串。在c 中,字串的輸入方式有兩種 需要用g 編譯 1.讀取乙個詞 直接跟在cin後面,即cin string,輸入的內容是單詞,即從第乙個非空格處進入,到空格停止。如果需要連續輸入個數不確定個單詞,可...

字串輸入函式

scanf gets fgets gets 的不足時它不檢查預留儲存區是否能容納實際輸入的資料,多出來的字元簡單地溢位到相鄰的記憶體區。fgets 對此進行了改進,它讓您輸入最大讀入的字元數,fgets是為i o檔案設計的,fgets 和gets 有三方面的不同 1.它需要第二個引數來說明最大讀入字...

字串 scanf函式輸入字串詳解

除了在定義字元陣列時初始化外,還可以通過scanf從鍵盤輸入字串。下面寫乙個程式 用 scanf 給字元陣列賦值不同於對數值型陣列賦值。前面講過,給數值型陣列賦值時只能用 for 迴圈乙個乙個地賦值,不能整體賦值。而給字元陣列賦值時可以直接賦值,不需要使用迴圈。此外從鍵盤輸入後,系統會自動在最後新增...