c語言中資料型別中只有 字元型(char),而 char型 變數一次只能儲存乙個字元,在日常工作中經常需要定義 字串 ,所以使用 字元陣列 來儲存和呼叫字元資料。
char ch[50];//定義字串時需要定義字串的長度,但是如果在定義的同時對字串進行賦值定義乙個長度為50的字串陣列
則不需要定義長度,**如下
char ch = "i love qian
";
gets(b);函式: strlen (const char*) 測量字串的長度,此長度不包括 空字元('\0')puts(b);
scanf( "%s
",b );
puts(b);
for( i =0; i < 10; i ++)
puts(b);
函式: 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函式:strcmp (const char*, const char*) 比較兩個字串,返回值 -1,0,1a;a =
getchar();
if( a >= 65 && a <= 90)//
大寫字母數值範圍
a+=32
;
else
if( a >= 97 && a <= 122)//
小寫字母數值範圍
a-=32
;putchar(a);
//大小寫字母間相隔32
putwchar(10);
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 從輸入...