字串定義方法

2021-07-29 17:57:46 字數 1983 閱讀 6180

字串定義方法

有兩種方法:

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,若為單位元組則長度...