日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言字符串的输入和输出

發(fā)布時(shí)間:2025/3/12 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言字符串的输入和输出 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

字符串的輸出

C語(yǔ)言中,有兩個(gè)函數(shù)可以在控制臺(tái)(顯示器)上輸出字符串,它們分別是:

puts():輸出字符串并自動(dòng)換行,該函數(shù)只能輸出字符串。printf():通過(guò)格式控制符%s輸出字符串,不能自動(dòng)換行。除了字符串,printf() 還能輸出其他類型的數(shù)據(jù)。

示例

#include <stdio.h> int main(){char str[] = "http://www.baidu.com";printf("%s\n", str); //通過(guò)字符串名字輸出printf("%s\n", "http://www.baidu.com"); //直接輸出puts(str); //通過(guò)字符串名字輸出puts("http://www.baidu.com"); //直接輸出return 0; }

運(yùn)行結(jié)果:

http://www.baidu.com http://www.baidu.com http://www.baidu.com http://www.baidu.com

注意,輸出字符串時(shí)只需要給出名字,不能帶后邊的[ ],例如,下面的兩種寫(xiě)法都是錯(cuò)誤的:

printf("%s\n", str[]); puts(str[10]);

字符串的輸入

在C語(yǔ)言中,有兩個(gè)函數(shù)可以讓用戶從鍵盤(pán)上輸入字符串,它們分別是:

scanf():通過(guò)格式控制符%s輸入字符串。除了字符串,scanf() 還能輸入其他類型的數(shù)據(jù)。gets():直接輸入字符串,并且只能輸入字符串。

scanf() 和 gets() 的區(qū)別:

scanf() 讀取字符串時(shí)以空格為分隔,遇到空格就認(rèn)為當(dāng)前字符串結(jié)束了,所以無(wú)法讀取含有空格的字符串。gets() 認(rèn)為空格也是字符串的一部分,只有遇到回車鍵時(shí)才認(rèn)為字符串輸入結(jié)束,所以,不管輸入了多少個(gè)空格,只要不按下回車鍵,對(duì) gets() 來(lái)說(shuō)就是一個(gè)完整的字符串。換句話說(shuō),gets() 用來(lái)讀取一整行字符串。

示例

#include <stdio.h> int main(){char str1[30] = {0};char str2[30] = {0};char str3[30] = {0};//gets() 用法printf("Input a string: ");gets(str1);//scanf() 用法printf("Input a string: ");scanf("%s", str2);scanf("%s", str3);printf("\nstr1: %s\n", str1);printf("str2: %s\n", str2);printf("str3: %s\n", str3);return 0; }

運(yùn)行結(jié)果:

Input a string: C C++ Java Python↙ Input a string: PHP JavaScript↙str1: C C++ Java Python str2: PHP str3: JavaScript

第一次輸入的字符串被 gets() 全部讀取,并存入 str1 中。第二次輸入的字符串,前半部分被第一個(gè) scanf() 讀取并存入 str2 中,后半部分被第二個(gè) scanf() 讀取并存入 str3 中。

注意,scanf() 在讀取數(shù)據(jù)時(shí)需要的是數(shù)據(jù)的地址,這一點(diǎn)是恒定不變的,所以對(duì)于 int、char、float 等類型的變量都要在前邊添加&以獲取它們的地址。但是在本段代碼中,我們只給出了字符串的名字,卻沒(méi)有在前邊添加&,這是為什么呢?因?yàn)樽址只蛘邤?shù)組名字在使用的過(guò)程中一般都會(huì)轉(zhuǎn)換為地址,所以再添加&就是多此一舉,甚至?xí)?dǎo)致錯(cuò)誤了。

int、char、float 等類型的變量用于 scanf() 時(shí)都要在前面添加&,而數(shù)組或者字符串用于 scanf() 時(shí)不用添加&,它們本身就會(huì)轉(zhuǎn)換為地址。

其實(shí) scanf() 也可以讀取帶空格的字符串
,scanf() 的用法還可以更加復(fù)雜和靈活,它不但可以完全替代 gets() 讀取一整行字符串,而且比 gets() 的功能更加強(qiáng)大。比如,以下功能都是 gets() 不具備的:

scanf() 可以控制讀取字符的數(shù)目;scanf() 可以只讀取指定的字符;scanf() 可以不讀取某些字符;scanf() 可以把讀取到的字符丟棄。

如果感覺(jué)不錯(cuò)的話歡迎點(diǎn)贊喲!!!

總結(jié)

以上是生活随笔為你收集整理的C语言字符串的输入和输出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。