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

C語言 程序員 鏡音雙子 ccc雲志 2019-04-05

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

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

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

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

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

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

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

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

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

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

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是字符串的長度

初始化函數示例:

String t;

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語言奇淫技巧,字符串的三種表示方法,不會用不是合格的程序員

相關推薦

推薦中...