天天看點

C語言奇淫技巧,字元串的三種表示方法,不會用不是合格的程式員

1.在C語言中,是将字元串作為字元數組來處理的,字元串是逐個存放到數組元素中的

C語言奇淫技巧,字元串的三種表示方法,不會用不是合格的程式員

例如用一個一維的字元數組存放字元串"I am a boy.",如下代碼:

char c[12] = {'I','a','m','a','b','o','y','.'};

這個字元串的實際長度是11,數組長度是12,實際工作中,人們關心的往往是字元串的有效長度而不是字元串的數組長度,例如要列印字元串,這是就要知道字元串的實際長度。平時常使用下面三種方式來測定字元串的實際長度:

C語言奇淫技巧,字元串的三種表示方法,不會用不是合格的程式員

(1)在串值後面加一個不計入長度的結束标記字元,比如''來表示串值的終結

初始化一個字元串的方法如下,在最後添加''

char str[] = {'I','a','m','h','a','p','p','y',''};

也可以直接使用字元串常量初始化字元數組(系統自動加上''),這種方法符合人們的習慣。

char str[] = "I am happy";

或者

char str[] = {"I am happy"};

注意:不能使用下面的指派方式:

char str[20];

str = "I am happy";

但可以用字元指針指向這個字元串:

char *str;

str = "I love China";

(2)将實際串長度值儲存在數組0的下标下

#define MAXSIZE 20 //數組的長度

typdef char String[MAXSIZE+1];

初始化字元串的方法:

String t;

StrAssign(t,"I am happy");

int StrAssign(String T,char *chars)

{

T[0] = strlen(chars); //下标為0存放數組長度

for(i=1;i<=strlen(chars);i++) //下标位置從1開始存放資料

T[i] = *(chars+i-1);

}

return 1;

(3)使用結構體類型(自定義類型)

#define MAXSIZE 20

typedef struct{

char ch[MAXSIZE];

int len;

}String;

其中:MAXSIZE表示串的最大長度,ch是存儲字元串的一維數組,len是字元串的長度

初始化函數示例:

StrAssign(&t,"I am happy");

int StrAssign(String *t,char *chars)

int i;

if(strlen(chars)>MAXSIZE+1) //字元串的長度大于數組的長度,操作失敗,傳回0

return 0;

for(i=0;i<strlen(chars);i++)

t->ch[i] = *(chars+i);

t->len = strlen(chars); //數組的長度

return 1; //傳回1,操作成功

說明:這裡的StrAssign函數的參數t使用的是指針,是因為結構體變量做做形參,用法和普通變量一樣屬于值傳遞方式,在子函數中要給t指派,是以輸入的是t的指針。與之對比的是(2)子函數中T是數組,傳入的是數組的首位址(改變形參也就改變了實參)。

C語言奇淫技巧,字元串的三種表示方法,不會用不是合格的程式員