字串定義方法
有兩種方法:
1) 用字元陣列;
2) 用字元指標;
對應兩種定義方法,有不同的初始化以及賦值方法
對字元陣列,有以下幾種定義方法:
1) char str="12345";
或給字串加上大括號:char str=;
這種方法定義時,系統會自動在字串的末尾加上字串結束符,即 『\0』,
2) char str[10]=;
這種方法定義時,系統會自動從未初始化的元素開始,將之後的元素賦為\0,如上面的陣列str中的元素實際上是:'1','2','3','4','5','\0','\0','\0','\0','\0'
3) char str=;
這種方法定義時,系統不會自動在字串的末尾加上字串結束符;
此時用sizeof()函式可以正確求出其所佔的記憶體大小;但用strlen()函式不能正確求出其長度,因為strlen是通過\0判斷字串結束的。
所以,採用該方法定義時,一般人為地加上\0,即char str=;
易錯情況:
1、char a[10]; a[10]="hello";//乙個字元怎麼能容納乙個字串?況且a[10]也是不存在的!
2、char a[10]; a="hello";//這種情況容易出現,a雖然是指標,但是它已經指向在堆疊中分配的10個字元空間,現在這個情況a又指向資料區中的hello常量,這裡的指標a出現混亂,不允許!
還有:不能使用關係運算子「==」來比較兩個字串,只能用strcmp() 函式來處理。
補充:無論是靜態,區域性還是全域性陣列只有在定義時才能初始話,否則必須通過其它方法,比如迴圈操作實現。任何
int a[3];
static int b[3];
a[3] = ;
b[3] = ;
沒有在定義時初始化都是錯誤的!
用字元指標定義時:
1) 只能採用字串的方式初始化:char *str3="12345";
注意:字元指標可以用字串常量初始化和賦值;
即:char *str3;str3="12345";也是可以的
此時也可以用str3[4]的形式訪問其中的元素,如cout<< str3[4];就會輸出str指向的字串的第四個元素。
該方法也是自動加上了字串結束符的。
例程:#include
#include
using namespace std;
int main()
;char *str3="12345";
char str4=;
char str5=;
printf("%d,%d,%d,%d,%d,%d\n",str2[5],str2[6],str2[7],str2[8],str2[9],str3[4]);
printf("各個字串為:%s,%s,%s,%s,%s\n",str1,str2,str3,str4,str5);
printf("各個字串的所佔的記憶體大小為:%d,%d,%d,%d,%d\n",sizeof(str1),sizeof(str2),sizeof(str3),sizeof(str4),sizeof(str5));
printf("各個字串的有效長度為:%d,%d,%d,%d,%d\n",strlen(str1),strlen(str2),strlen(str3),strlen(str4),strlen(str5));
printf("%d\n",strcmp(str1,str3));
printf("%d\n",strcmp(str1,str5));}
執行結果:
0,0,0,0,0,53
各個字串為:12345,12345,12345,12345,12345燙?2345
各個字串的所佔的記憶體大小為:6,10,4,6,5
各個字串的有效長度為:5,5,5,5,130-1
press any key to continue
自定義截字串方法
問題描述 編寫乙個擷取字串的函式,輸入為乙個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截半個,如 我abc 4,應該截為 我ab 輸入 我abc漢def 6,應該輸出為 我abc 而不是 我abc 漢的半個 解決方法 對輸入的字串進行遍歷,若為雙位元組則長度為2,若為單位元組則長度...
C 定義字串陣列的方法
總結 將陣列元素型別最好定義為string型別,而不是char 型別 vs2017無法通過 include using namespace std intmain 會出現 warning deprecated conversion from string constant to char wwrit...
自定義截字串方法
問題描述 編寫乙個擷取字串的函式,輸入為乙個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截半個,如 我abc 4,應該截為 我ab 輸入 我abc漢def 6,應該輸出為 我abc 而不是 我abc 漢的半個 解決方法 對輸入的字串進行遍歷,若為雙位元組則長度為2,若為單位元組則長度...