c 字元讀入 s gets n

2021-08-17 13:35:32 字數 1346 閱讀 8350

一、快速了解

1.scanf( )函式和gets( )函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串」hi hello」,則應該使用gets函式。

2.gets可以接收空格,回車結束,gets(s)是輸入一行;而scanf(%s)遇到空格、回車和tab鍵都會認為輸入結束,所有它不能接收空格。

char string[15]; gets(string); /遇到回車認為輸入結束/

scanf(「%s」,string); /遇到空格認為輸入結束/

所以在輸入整行時,應該使用gets輸入。

二、詳細分析

在c語言中,能構獲取字串的函式至少有兩個:

scanf()

所在標頭檔案:stdio.h

接受字串時:scanf(「%s」,字元陣列名或指標);

gets()

所在標頭檔案:stdio.h

語法:gets(字元陣列名或指標);

兩者在接受字串時:

1.不同點:

scanf不能接受空格、製表符tab、回車等;

而gets能夠接受空格、製表符tab和回車等;

scanf返回的為接收到的變數值的個數;

gets(str) 在讀取成功的時候返回str,str儲存的是成功讀入的內容 在失敗的時候返回null,str的內容保持不變;

2.相同點:

字串接受結束後自動加』\0』。

例1:

[cpp] view plain copy

#include

main()

依次鍵入asd空格fg回車,asd空格fg回車,則ch1="asd\0",ch2="asd fg\0"。

例2:[cpp] view plain copy

#include

main()

依次鍵入asdfg回車,asdfg回車,則ch1=」asdfg\0」,c1=』\n』,ch2=」asdfg\0」,c2需輸入。

scanf :當遇到回車,空格和tab鍵會自動在字串後面新增』\0』,但是回車,空格和tab鍵仍會留在輸入的緩衝區中。

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

gets()用到讀取字串,用回車結束輸入

scanf()可以讀取所有型別的變數

[cpp] view plain copy

#include 

#include

int main()

C語言字元讀入函式總結

在使用c語言程式設計時,常用到的字元錄入函式有getchar getch 和getche 這三個函式的基本功能類似,不過有稍許區別,基本資訊如下表所示。函式名稱 函式原型 標頭檔案返回值 說明getchar int getchar void stdio.h 返回使用者輸入的第乙個字元的ascii碼 ...

scanf讀入字串與讀入字元的區別

今天下午比賽時候有道題用c 輸入輸出是超時的,所以準備換上c試試,發現幾個小問題 1 使用scanf c a 讀取a a是char型別 如果讀取之前有換行符或者空格,那麼a就會把之前的換行符或者空格讀取到,解決方法就是這之前先getchar 一下。2 而如果用scanf s str 讀取str 我發...

字串讀入問題 C語言

字串讀入3種形式 scanf gets getchar scanf不可以讀入空格,讀入空格即可停止,算乙個字元陣列 不含空格 可以應用於2個句子間有很多空格,但2個句子本身沒有空格 gets可以讀入空格,可以讀入含有空格的句子的時候,getchar是讀入乙個字元,可以讀入空格,經常用於處理讀掉空格。...