《C語言及程式設計》實踐參考 字串處理函式

2021-07-02 04:16:49 字數 3462 閱讀 8851

返回:賀老師課程教學鏈結

實踐要求

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

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

功能用陣列名作形參

用指標作形參

字串str1

和str2

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

str1

中char *astrcat(char str1, char str2)

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

去除字串str

中的特定字元

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

char *adelchar(char str, char c)

char *pdelchar(char *str, char c)

求字串str

的長度並返回

int astrlen(char str)

int pstrlen(char *str)

統計句子str

中單詞的個數

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

int pwordnum(char *str)

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

char *ptrim(char *str)

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

char *palltrim(char *str)

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

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

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

[參考解答]

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;

}

(2)用指標作形參的方案:char *pstrcat(char *str1, char *str2)

#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 #include char* adelchar(char str, char c);

char* pdelchar(char *str, char c);

int main(void)

char* adelchar(char str, char c)

str[i]='\0';

return str;

}char* pdelchar(char *str, char c)

*p='\0';

return str;

}

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語言及程式設計》實踐參考 字元統計

返回 賀老師課程教學鏈結 實踐要求 專案2 字元統計 下面的程式可以統計出乙個字串中數字字元的個數 include int main printf 其中的數字個數是 d n n return 0 請分別編制程式,完成下面的處理 1 統計字母 a 出現的次數 參考解答 include int main...

《C語言及程式設計》實踐專案 字串陣列

返回 賀老師課程教學鏈結 專案1 帶姓名的成績單 設score陣列中儲存8名同學的c語言成績,字串陣列name中儲存同學們的姓名。這兩個陣列中,每名同學的姓名與成績的下標要始終保持一致 例如name i 和score i 表示同一位同學 下標為i 的姓名和c語言成績,否則會張冠李戴 1 輸出按成績排...

《C語言及程式設計》實踐專案 字串陣列

返回 賀老師課程教學鏈結 專案1 帶姓名的成績單 設score陣列中儲存8名同學的c語言成績,字串陣列name中儲存同學們的姓名。這兩個陣列中,每名同學的姓名與成績的下標要始終保持一致 例如name i 和score i 表示同一位同學 下標為i 的姓名和c語言成績,否則會張冠李戴 1 輸出按成績排...