C語言學習 字串的學習(一)

2022-08-11 18:57:11 字數 2985 閱讀 5685

c語言中資料型別中只有 字元型(char),而 char型 變數一次只能儲存乙個字元,在日常工作中經常需要定義 字串 ,所以使用 字元陣列 來儲存和呼叫字元資料。

char ch[50];//

定義乙個長度為50的字串陣列

定義字串時需要定義字串的長度,但是如果在定義的同時對字串進行賦值

則不需要定義長度,**如下

char ch = "

i love qian

";

gets(b);

puts(b);

scanf( "%s

",b );

puts(b);

for( i =0; i < 10; i ++)

puts(b);

函式: strlen (const char*) 測量字串的長度,此長度不包括 空字元('\0')

函式: sizeof() 測量的是在陣列所佔記憶體的大小

char a = "

abc"

;char b[5

] ;gets( b );

printf(

"strlen a =%d,sizeof a =%d\nstrlen b =%d,sizeof b =%d

",strlen(a),sizeof(a),strlen(b),sizeof(b));

執行結果:

字元陣列 a 所佔的記憶體大小比字串的長多多一位,多出的一位是系統自動增加的 空字元('\0')

此處還有個疑問沒有找到答案,還望大神解答一下:

函式:strlwr(char *) 轉換字串內字母為小寫

strupr(char *)轉換字串內字母為大寫

這兩個函式只針對 字串 進行轉換,若是對單個字母進行轉換時可通過下列方法

char

a;a =

getchar();

if( a >= 65 && a <= 90)//

大寫字母數值範圍

a+=32

;

else

if( a >= 97 && a <= 122)//

小寫字母數值範圍

a-=32

;putchar(a);

//大小寫字母間相隔32

putwchar(10);

函式:strcmp (const char*, const char*) 比較兩個字串,返回值 -1,0,1

char str1[10] = "

abcd

",str2[10] = "

abcde";

inti,j,k;

i = strcmp(str1,str1);//

相等j = strcmp(str2,str1);//

大於k = strcmp(str1,str2);//

小於printf("

字串相等:%d\n字串大於:%d\n字串小於:%d\n

",i,j,k);

這個函式只針對 字串,字元間可以直接比較大小

函式:strcpy (char*, const char*) 將後乙個字串的內容複製到前乙個字串中

第一次使用這個函式時以為 會首先將 str1字串 的內容清空,然後在複製過去

事實上只是用在 str2字串 後面添上乙個 空字元('\0'),str1字串 內未被複製的內容依然存在

char str1[10] = "

chinese

",str2 = "

china";

strcpy(str1,str2);

//輸出的內容 china

//看似 strcpy 函式會清空 str1 中的值,然後執行複製

//實際上 str1 中 只有前6個字元被 str2 替換(第6個是 '\0' ),其餘的仍為 str1 的值

puts(str1);

printf(

"new \n");

str1[

5] = '

e';//

替換掉自動新增的 空字元

puts(str1);

執行結果:

函式:strncpy (char*, const char*,int) 將後乙個字串的前n個字元複製到前乙個字串中

這個函式複製是不會包含 空字元

char str1[10] = "

abcdefh

",str2 = "

china";

strncpy(str1,str2,

2);//

複製時不包含 空字元

puts(str1);

執行結果:

函式:strcat (char*, const char*) 將後乙個字串的內容連線到前乙個字串

新的字串會儲存在 str1 中,所以要求 str1 應該足夠大

char str1[30] = "

hubei of";

char str2 = "

china";

//新的 字串 會儲存在 str1 中

strcat(str1,str2);

printf(

"%s\n%s\n

",strcat(str1,str2),str1);

執行結果:

以上是我初步學習的體會,如有錯誤,還望指正

C語言學習 字串

字串宣告 char 變數名 數量 示例 include intmain printf 輸出字串ch2 s n ch2 方法3 char ch3 省略字串長度,長度編譯器在編譯時會幫忙計算 printf 輸出字串ch3 s n ch3 方法4 char ch4 name 此時末尾不需要加上 0 大括號...

C 語言學習 字串

c 字串 在 c 語言中國,字串實際上是使用 null 字元 0 終止的一維字元陣列。因此,乙個以 null 結尾的字串,包含了組成字串的字元。下面的宣告和初始化建立了乙個 hello 字串。由於在陣列的末尾儲存了空字元,所以字元陣列的大小比單詞 hello 的字元數多乙個。char greetin...

C語言學習 字串(10 19)

for i 0 str i 0 i 表示讀入乙個字串,直到遇到空白字元為止 當遇到空白字元時,空白字元之後的字元留在了 輸入緩衝區 中,下次遇到scanf 時自動被讀取 printf s str 表示輸出乙個字串,直到遇到 0 為止 gets str 以回車符 n 作為字串終止符,同時將 n 從輸入...