C 語言筆記— 字串(Strings). 字串其實就是字元的集合
文章推薦指數: 80 %
字串就是一個單詞的概念。
字元:A字串:Apple本章重點:字串的宣告字串的輸入、輸出函式sprintf,sscanf
字串的宣告如下:char字串名稱[字串長度]=“Apple”;當你宣告字串時,編譯器會自動在字串的最後一個後面加上’\0’(告訴電腦說我們這詞彙已經結束)還有其他種宣告方式:charstr1[6]="hello";charstr2[]="starbucks";//size10//一般的陣列宣告也適用,只是要注意會多一項‘\0’charstr3[6]={'h','e','l','l','0','\0'};charstr4[]={'s','t','a','r','b','u','c','k','s','\0'};*str1陣列大小設為6的原因是,我們還需要考慮最後一個’\0’他也算是一個字元,所以要多加1*str2的例子中,我們可以知道,就算不設陣列大小也是可以宣告字串。
*重點小結:.宣告字串時,要用雙冒號。
ex:“hello”.字元,單引號不會視為字串。
ex:’A’.就像一般陣列來說,字串也可以作為指標使用。
.字串指標ex:char*str=“hello”;hello會被視為常數(不可以做修改)。
2.字串的輸入、輸出(StringInput/Output)—輸入(StringInput):之前我們有提過,C提供的輸入有scanf(),gets(),fgets(),那現在我們該如何運用在字串上呢?舉例來說明:scanf:charname[20];intage;printf("Pleaseenteryournameandage\n");scanf("%s%d",name,&age);用scanf()讀取字串,注意字串name前面不需要加記憶體位置‘&’,因為陣列名稱就有指標的概念。
*當讀取到空白的時候scanf()會自動結束。
所以我們可以用gets(),因為gets()讀取到enter(newline)時,才會結束。
之前有提過使用gets()比較不安全,fgets()會是更好的選擇。
fgets的使用:fgets(陣列(字串)名稱,想要讀取的數量大小,stdin)//stdin標準輸入,也可以說是從鍵盤讀取的概念。
範例:#include
若想要把換行去掉的話可以打以下程式碼:charname[20];if(name[strlen(name)-1]=='\n')name[strlen(name)-1]=='\0';//意思就是把原本放在後面的換行,變成終止符號,就不會自動換行了。
—輸出(StringOutput):fputs(),puts(),printf()都是輸出的好幫手。
printf()相信大家都很熟練了,這邊就不多做說明。
fputs的使用:fputs需要字串名稱和一個指標指出要在哪裡印出字串,在下面的程式碼指標為stdout,因為我們要印在螢幕上,所以使用標準輸出。
#include
sprintf(weather,"%sisabout%ddegrees.",country,tmp);printf("%s\n",weather);return0;}sscanf用途:讀取字串,並個別放入新的字串中。
#include
4.
有幾個比較好用的提供給大家參考:strlen()—得到字串長度這邊計算長度,不會把終止符號一起算進去,很單純只有字串的長度。
strcat()—合併兩個字串char*strcat(char*destination,constchar*source);//翻成中文來看char*strcat(char*合併到的字串,被合併的字串(const));strncat(str1(被合併的字串),str2(原本的字串),n)—將str2的前n個字母合併到str1上#include
/*只複製五個字母*/strncpy(str3,str2,5);//str2中的前五個字母複製到str3上。
str3[5]='\0';/*在str3上加一個結束符號*/puts(str1);puts(str2);puts(str3);return0;}sourcefrom:cppstrcmp()—比較兩個字串字串比較的方式,從第一個字母開始必較,若第一個字母相同的話,就換用第二個字母去做比較,以此類推。
#include
printf("foundat%d\n",pch-str+1);/*在找下一個s的位址,用原本的記憶體位址再加一(下一個字串)也就是從“isasamplestring”開始找下一個s,以此類推*/pch=strchr(pch+1,'s');}return0;}sourcefrom:cppstrrchr(str1,c)—倒著找回來字母c在str1上的哪一個位子*跟上方類似,只是從後面找回來*當沒找到字母c,就會回傳NULL#include
sourcefrom:strstr5.字串轉換成數字有幾種方式可以把字串轉成數字:atoi,ACSIIconverttointegeratof,ACSIIconverttofloatatol,ACSIIconverttolonginteger要使用前,要先include
sourcefrom:atoi其他範例可以去cplusplus查看,那裡有豐富的資源等著你~~終於把字串講完拉~如果有不懂的也歡迎提問,其實之後多做題目就可以把這些東西融會貫通了。
繼續朝著C語言之路邁進吧!!--MorefromSharonPengFollow一起精進程式能力吧!!Lovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedSharonPeng153Followers一起精進程式能力吧!!FollowMorefromMediumAmirKirshinDevGenius10mistakestoavoidwhenusingstd::vectorSubratCONSTEXPRInC++LukeHackettStaticlibrariesforCSiddharthBhasinC++Templates:Whatisstd::enable_ifandhowtouseit?HelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1C字串函式庫- 維基百科,自由的百科全書
C字串函式庫是C語言裡負責各種字符串處理操作功能的標準函式庫,例如:複製,連接,標記化 ... mbtowc - converts the first multibyte character i...
- 2字串(string) | C++與演算法
字串(string). 字串,就是把一堆字元串起來的意思。 例如 "Hello" 、 "^_^" 、 "Rock!" 在C++裡,可以用char[ ] 或string 儲存字串. 以下僅先介紹c...
- 3[C 語言] 程式設計教學:如何使用C 字串(String) | 開源技術教學網
前言學完陣列和指標後,就有足夠的預備知識學習C 字串。C 語言沒有獨立的字串型別,而C 字串是以char 或其他字元(character) 為基礎型別的陣列,所以要有先前文章的.
- 4C 速查手冊- 11.3 字串處理string.h - 程式語言教學誌
本篇文章介紹C 標準程式庫的string.h 。
- 5C 字符串 - 菜鸟教程
C 字符串在C 语言中,字符串实际上是使用空字符\0 结尾的一维字符数组。 ... #include <stdio.h> #include <string.h> int main () { ch...