天天看點

指針和字元串

指針和字元串

這裡%s表示輸出一個字元串,輸出項為指針p,系統先輸出它指向的一個字元,然後p自動加1,使之指向下一個字元,直到遇到字元串結束标志'\0'。

1.題目:先輸入兩個字元串,然後用指針比較輸入的兩個字元串是否相等,相等輸出yes,不相等輸出no.

指針和字元串

(更正一下:這個代碼判斷條件寫\n就有點離譜,後面想想沒想明白,如果是\0字元串帶有空格确實也無法判斷,但是\0的時候我們把條件改一下就好了(&&改||)

指針和字元串

使用字元指針時候,指針存放的是字元串的首位址,并且字元串常量傳回的是存放字元串的記憶體空間的首位址。比如char *p="nihao";p存放就是字元串nihao的首位址

(printf("%s",p))。這裡要注意一點:指針能進行++,--的運算,但是數組名不行!!

2.題目:不利用strcpy函數,利用字元指針完成将一個字元串複制到另一個字元串中。

指針和字元串

這裡就發生了一件比較有意思的事情,第一題我用*p!='\n',第二題我開始也直接上'\n',但是結果跟我想的就不一樣:

指針和字元串

對,啥也沒有,離譜。

還有個小技巧:就是用while循環時候我們可以把指針=,++寫進判斷裡面去,比如

while((*p2++=*p1++)!='\0');注意這裡判斷時根據*p2指向的值是否為串結束符來判斷

還有一種while(*p2++=*p1++),利用邏輯進行判斷,隻有串結束符才為假。

3.題目:定義一個測量字元串長度函數。

指針和字元串

4.題目:将字元串s1插入字元串s2中,要求:在s1中查找s2串的第一個字元,如果找到,則在此位置進行覆寫;如果沒有找到,即s2中第一個字元沒有被s1所包含,則在s1尾部進行插入。

指針和字元串

如有不對,歡迎指正。