C語言 字元陣列與字串處理 實踐 2

2021-08-08 01:38:06 字數 3698 閱讀 5604

【專案4-字串處理函式】

指標是神奇的,指向整型的指標int *p1,可以操作整型陣列int a;指向字元型的指標char *p2,可以操作字元陣列(字串)char str;更靈活的是,在函式的傳遞中,指標、陣列名在一定程度上可以互換。請編制函式,對字串的進行各種操作。序功能

用陣列名作形參

用指標作形參

1字串str1

和str2

連線,連線後的結果存放到

str1中

char *astrcat(char str1, char str2)

char *pstrcat(char *str1, char *str2)

2去除字串str

中的特定字元

c(如空格),結果仍儲存到原字串中

char *adelchar(char str, char c)

char *pdelchar(char *str, char c)

3求字串str

的長度並返回

int astrlen(char str)

int pstrlen(char *str)

4統計句子str

中單詞的個數

不再重重複,做右邊的(下同)

int pwordnum(char *str)

5去除句子中第乙個單詞前的空格,返回去除了空格的字串

char *ptrim(char *str)

6去除句子中所有多餘的空格,返回去除了空格的字串

char *palltrim(char *str)

7比較兩個字串,返回值同strcmp()

int pstrcmp(const char *str1, const char *str2)

提示1:在完成任務時,自編main函式進行測試,測試中,給出的的實際引數可以是以』\0』結束的字元陣列,也可以是指向字元的指標。

提示2:在實際專案中,通過包括string.h標頭檔案,可以呼叫c語言中操作字串的函式完成相關操作,而不必專門定義。

任務**:

(1)1 字串str1和str2連線,連線後的結果存放到str1中

(1)用陣列名作形參的方案:char *astrcat(char str1, char str2)

#include char *astrcat(char str1, const char str2);

int main()

char *astrcat(char str1,const char str2)//最後返回的是乙個陣列,所以是指向指標的函式

str1[i]='\0';//切記

return str1;

}

指標法1:

#include char *astrcat(char *, const char *);

int main()

char *astrcat(char *str1,const char *str2)//最後返回的是乙個陣列,所以是指向指標的函式

*(str1+i)='\0';//切記

return str1;

}

指標法2:(

注意區分與指標1的不同)

#include char *pstrcat(char *str1, char *str2);

int main()

//在下面的實現中,str1用指標法訪問,而str2用下標法訪問

//在實際工程中,這種風格並不好,要盡可以用同一種方式,一般而言,指標法效率更高

//此處str2用下標法訪問,除了作為示例的考慮外,還有乙個難言之隱

//如果宣告char *q,並用q=str2、q++等操作,這是非法的,因為str2有const的限制,從而賦值不相容

//如何修改,請思考

char *pstrcat(char *str1, char *str2)

*p='\0';//切記!!

return str1;

}

(2)去除字串str中的特定字元c(如空格),結果仍儲存到原字串中

用陣列名作形參:char *adelchar(char str, char c)

用指標作形參:char *pdelchar(char *str, char c)

#include char *astrcat(char str1, const char str2);

int main()

//本函式採用了形參為陣列,在實現中,直接用下標法進行訪問

//實際上,在實現中,完全可以用指標法訪問

char *astrcat(char str1, const char str2)

str1[i]='\0';//切記!!

return str1;

}

(3) 求字串str的長度並返回

用陣列名作形參:int astrlen(char str)

用指標作形參:int pstrlen(char *str)

#include int astrlen(char str);  

int pstrlen(char *str);

int main(void)

int astrlen(char str)

int pstrlen(char *str)

(4) 統計句子str中單詞的個數

#include int pwordnum(char *str);  

int main()

int pwordnum(char *str)

} return num;

}

(5)去除句子中第乙個單詞前的空格,返回去除了空格的字串

#include void ptrim(char *str);

int main(void)

void ptrim(char *str)

(6 )去除句子中所有多餘的空格,返回去除了空格的字串

#include void palltrim(char str);  

int main(void)

void palltrim(char *str)

else if (notspace) //是空格,但目前是第乙個(因為之前notspace=true;的條件是遇非空格)

else //如遇第二個或更後的空格,正是由於遇到第乙個空格並複製後,notspace=false;的原因,會走到這兒

} *p='\0';

}

(7)比較兩個字串,返回值同strcmp()

#include int pstrcmp(char *str1, char *str2);  

int main(void)

//str>str2,返回1

//str==str2,返回0

//str*q)

return 1;

else if(*p<*q)

return -1;

else

return 0;

}

C語言字串與字元陣列

通俗的講字串是由一串字元組成,例如 hello world n 即是乙個字串。c 語言中沒有真正意義上的字串型別,字串由字元陣列或者字串常量來表示。const char p hello world n 上述示例中 hello world n 即是乙個字串常量,該常量由乙個字元型別指標儲存其實際位址。...

C語言,字串的處理,陣列字串,指標字串。

c語言菜鳥教程 void memset void str,int c,size t n 複製字元 c 乙個無符號字元 到引數 str 所指向的字串的前 n 個字元。size t strlen const char str 計算字串 str 的長度,直到空結束字元,但不包括空結束字元。char str...

c語言陣列與字串

二維陣列 回想一維陣列定義方式 型別修飾符 陣列名 元素個數 int array 5 建立乙個二維陣列 型別修飾符陣列名 包含幾個小陣列 每個小陣列有多少個元素 初始值如何寫?int array 3 4 一維陣列可以省略元素個數,二維資料只能省略第一維 第二種初始值寫法 int array 3 4 ...