最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言輸入一個字符串的方法有哪些

 更新時間:2023年06月06日 15:28:10   作者:Jambo!  
字符串輸入是C語言編程中非常重要的部分,其中scanf函數(shù)是一種廣泛使用的輸入字符串的方法,下面這篇文章主要給大家介紹了關(guān)于C語言輸入一個字符串的方法有哪些的相關(guān)資料,需要的朋友可以參考下

用scanf輸入字符串(有限制)

整個字符串處理

scanf()printf()函數(shù)中,%s指的就是字符串
所以我們就可以使用scanf("%s",str)printf("%s",str)從鍵盤處讀取字符串并將字符串打印出來

代碼如下:

int main()
{
	char str[10] = { 0 };
	scanf("%s", str);
	printf("%s", str);
	return 0;
}

這里要注意的一點是:在scanf函數(shù)中,后面的參數(shù)必須是一個地址,如輸入一個整形變量:scamf("%d",&a),都需要進(jìn)行&取地址操作
但是數(shù)組名就已經(jīng)是地址了(詳解請點擊觀看我的一篇關(guān)于數(shù)組名到底是什么的文章)
所以直接用數(shù)組名即可,不用進(jìn)行取地址

如果我們輸入一個連續(xù)的字符串如:abcde,這段代碼會正常運行

然而,如果輸入一個非連續(xù),也就是中間有空格的字符串時,代碼只會打印出第一個空格以前的內(nèi)容

這是因為在鍵盤與scanf函數(shù)中,存在一個輸入緩沖區(qū),從鍵盤輸入的內(nèi)容會存放到這個緩沖區(qū)中

scanf并不會讀取走空格,它只能讀取走字符以及字符串
例如當(dāng)從鍵盤輸入字符串abc 123(注意abc123之間是有一個空格的),在緩沖區(qū)中如圖:

scanf首先會將字符串abc取走,然后在abc后面有一個空格,scanf無法讀取走空格,所以雖然從鍵盤輸入abc 123,但是最后只有abc被存放在了str
所以最后只輸出了abc

總結(jié)一下scanf

輸入值之前的空白(空格、制表符、換行符)會被跳過,輸入值之前的空白表示結(jié)束。因此,用%s格式碼輸入字符時,中間不能包括空白

這里注意的是:前面講的scanf無法讀取輸入緩沖區(qū)中的空格甚至是回車,這里的scanf指的是scanf("%s",str),只是函數(shù)中是%s才無法讀取,而如果是scanf("%c",&character),輸入一個字符,對于空格和回車都是能正常輸入的,這里不要弄混

所以,用scanf接受字符串是有局限性的。

逐個字符處理

前面已經(jīng)講了,用scanf接受字符串是由局限性的,當(dāng)字符串中含有空格,scanf函數(shù)只能讀取第一個空格以前的字符串,但是如果非要用scanf進(jìn)行接受字符串,只能是逐個字符處理

代碼如下:

#include<stdio.h>
int main()
{
	char ch[10]; 
	for (int i = 0; i < 10; i++)
	{
		scanf("%c", &ch[i]);
	}
	for (int i = 0; i < 10; i++)
	{
		printf("%c", ch[i]);
	}
	return 0;

這樣也可以進(jìn)行對于字符串的輸入以及輸出

用getchar()輸入字符串

getchar()與scanf最大的區(qū)別就是,getchar可以讀取走輸入緩沖區(qū)中的空格以及回車

這里的內(nèi)容我i之前有一篇文章進(jìn)行了詳細(xì)講解,請點擊查看

代碼如下:

int main()
{
	char str[20] = { 0 };
	char ch = 0;
	while ((ch = getchar()) != '\n')
	{
		putchar(ch);
	}
	return 0;
}

用gets()輸入字符串(簡單快捷)

這里介紹一個新的函數(shù)gets(),此函數(shù)在頭文件string.h中,使用此函數(shù)需要加頭文件#include <string.h>
gets函數(shù)的官方格式: char * gets ( char * str );
在參數(shù)列表中,需要傳一個字符型指針,也就是我們要輸入的字符串的名(數(shù)組的名)
gets()函數(shù)的主要作用就是接受從鍵盤輸入的一個字符串
gets當(dāng)遇到換行符\n或者EOF時停止,并將讀取的結(jié)果存放在str指針?biāo)缸址麛?shù)組中

#include <stdio.h>
#include<string.h>
int main()
{
	char str[10];
	printf("請輸入字符串");
	gets(str);
	printf("請輸出字符串");
	printf("%s", str);
	return 0;
}

輸入帶有空格的字符串也可以正常輸出

其實還存在一個與gets函數(shù)配套的函數(shù)puts函數(shù),用來輸出字符,具體用法與printfputchar無差別

#include <stdio.h>
#include<string.h>
int main()
{
	char str[10];
	printf("請輸入字符串: ");
	gets(str);
	printf("請輸出字符串: ");
	puts(str);
	return 0;
}

gets函數(shù)與scanf、getchar的一些區(qū)別

在前面的scanf函數(shù)和getchar函數(shù)中,回車都需要值得注意,但是在get函數(shù)中,回車不作為讀取內(nèi)容,遇到回車時,系統(tǒng)自動用\0代替回車\n,所以輸入一行字符串后按下回車,就完成了一次輸入

gets函數(shù)一遇到回車就結(jié)束,并把這個回車從緩沖區(qū)中移走,這點與scanf不同,scanf是遇到回車,空格就結(jié)束,但并不會將回車、空格從緩沖區(qū)中移走

gets函數(shù)只會遇見回車時結(jié)束遇到空格、制表符都會正常讀取,而scanf遇到空格、回車、制表符都會結(jié)束,getchar遇到空格、回車、制表符都正常讀取

總結(jié)

到此這篇關(guān)于C語言輸入一個字符串的方法有哪些的文章就介紹到這了,更多相關(guān)C語言輸入字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言如何實現(xiàn)三子棋

    C語言如何實現(xiàn)三子棋

    這篇文章主要介紹了C語言如何實現(xiàn)三子棋問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C++?類模板與成員函數(shù)模板示例解析

    C++?類模板與成員函數(shù)模板示例解析

    這篇文章主要為大家介紹了C++?類模板與成員函數(shù)模板示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • C++中const的常見用法詳解

    C++中const的常見用法詳解

    const名叫常量限定符,用來限定特定變量,以通知編譯器該變量是不可修改的,本文為大家整理了const的幾種使用,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-06-06
  • C++代碼實現(xiàn)逆波蘭式

    C++代碼實現(xiàn)逆波蘭式

    這篇文章主要為大家詳細(xì)介紹了C++代碼實現(xiàn)逆波蘭式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • c++基礎(chǔ)語法:構(gòu)造函數(shù)初始化列表

    c++基礎(chǔ)語法:構(gòu)造函數(shù)初始化列表

    構(gòu)造函數(shù)需要初始化的數(shù)據(jù)成員,不論是否顯示的出現(xiàn)在構(gòu)造函數(shù)的成員初始化列表中,都會在該處完成初始化,并且初始化的順序和其在聲明時的順序是一致的,與列表的先后順序無關(guān)
    2013-09-09
  • C++實現(xiàn)分水嶺算法(Watershed Algorithm)

    C++實現(xiàn)分水嶺算法(Watershed Algorithm)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)分水嶺算法Watershed Algorithm,具有一定的參考價值,感興趣的小伙伴們可以參考一 下
    2018-01-01
  • C++使用JsonCpp庫操作json格式數(shù)據(jù)示例

    C++使用JsonCpp庫操作json格式數(shù)據(jù)示例

    這篇文章主要介紹了C++使用JsonCpp庫操作json格式數(shù)據(jù),結(jié)合實例形式詳細(xì)分析了JsonCpp庫的下載及C++使用JsonCpp庫對json格式數(shù)據(jù)序列化相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • C語言實現(xiàn)繪制LoveBeat愛心曲線的示例代碼

    C語言實現(xiàn)繪制LoveBeat愛心曲線的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何溧陽C語言實現(xiàn)繪制LoveBeat愛心曲線,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • C++名稱空間介紹

    C++名稱空間介紹

    這篇文章主要介紹了C++名稱空間,這是一個很重要的概念——名稱空間,有些書本里翻譯成了命名空間,對應(yīng)的英文是namespace。下面來看文章對此的詳細(xì)介紹吧,需要的小伙伴可以參考一下

    2021-12-12
  • C語言/C++中如何產(chǎn)生隨機數(shù)

    C語言/C++中如何產(chǎn)生隨機數(shù)

    這里要用到的是rand()函數(shù), srand()函數(shù),和time()函數(shù)。需要說明的是,iostream頭文件中就有srand函數(shù)的定義,不需要再額外引入stdlib.h;而使用time()函數(shù)需要引入ctime頭文件
    2013-10-10

最新評論

长海县| 达拉特旗| 文化| 黄山市| 汨罗市| 荣成市| 淮阳县| 宜兴市| 文安县| 富川| 手游| 云浮市| 吉安县| 景德镇市| 博爱县| 阳城县| 广昌县| 洛宁县| 洪泽县| 门源| 称多县| 丹江口市| 余姚市| 黔西| 新丰县| 马公市| 柳州市| 乌鲁木齐县| 建宁县| 景泰县| 永城市| 犍为县| 元江| 含山县| 惠水县| 开鲁县| 陕西省| 鄂托克旗| 政和县| 沂源县| 封丘县|