1.陣列方式實現 (不用字串函式)程式如下
1與陣列有關的操作,必須要用到字串長度len (因為取長度比較簡單,就不用字串函式了)void reversebyarray(char *s)
213 }
在3-5行 首先用檢測 '\0' 字元判斷取字串長度 用len變數記錄
我嘗試過下面這一種** 測到的字串長度比原來大1
int len = 0就不使用上面這種方法;while (s[len++] != '
\0')
; //空語句
然後是倒序的具體實現,
常見的好幾種方法,網上好多是malloc出來len+1大小的空間 然後逆序放進去
但是我覺得,既然是陣列實現,就用乙個臨時變數t
用前後交換的方法 直接完成交換(迴圈只是迴圈len/2)
另外乙個容易出現問題的是 交換的時候s[len - i - 1] ,為什麼要多減1呢?
2.用指標的方法 字串倒序
1用指標 就要突出指標的特點 就不像陣列void reversebypointer(char *s)
2
第一眼看上去,程式似乎特別簡單.
但是 這個程式用到了緩衝區,
如果這個緩衝區大小不夠 ↓如下
在緩衝區足夠的情況下 ,程式就會正常執行辣
這裡新建的兩個指標變數b和p都不是多餘 起個別名用 都有實在的作用
buf是陣列名 值雖然是陣列的首位址,但是這個首位址不能進行加減操作,所以新建了個b指標 指向buf
s 是 char * 型別的 可以加減 但是 加到最後(找到\0後) 怎麼倒回來呢?
那麼 我就選擇 定義乙個p指標變數 並賦值為 指標s 就是 s和p是一樣的
而且 p向後移動 找到'\0'後 它的任務就完成了 並不需要回到開始的位置
最後 把buf的內容 -- (倒著)填回 s 指向的字串就行了
最後就是\0的問題 因為字串只是倒序 長度沒有變化,所以\0用的還是s原來的\0 不用在末尾新增\0
3.完整的程式和執行結果
1 #include 2本人原創()3void reversebyarray(char *s)415
}1617void reversebypointer(char *s)
1827
28int
main()
2939
40/*
在vc編譯器的執行結果
41源字串:i love you 233
42陣列方式倒序:332 uoy evol i
43指標方式倒序:i love you 233
44請按任意鍵繼續. . .
45*/
C語言通過指標和陣列實現字串倒序
1.陣列方式實現 不用字串函式 程式如下 1 void reversebyarray char s 213 與陣列有關的操作,必須要用到字串長度len 因為取長度比較簡單,就不用字串函式了 在3 5行 首先用檢測 0 字元判斷取字串長度 用len變數記錄 我嘗試過下面這一種 測到的字串長度比原來大1...
指標字串和陣列指標
指標是c語言的精髓,只有掌握好指標才算是真正學會了c語言,以下就是學習指標的例子 include main int n 5 sort name,n print name,n if strcmp1 name 0 name 1 0 printf s,s n name 0 name 1 if strcmp...
C 指標和陣列 字元和字串 字元陣列
char ch 24 字元陣列初始化時,如果使用者未顯示新增 0 編譯器會自動加上,以表示字串結束。所以上面的初始化就相當於 char ch 24 除了用上述的方式來初始化乙個字元陣列,還可以用下面的方式 char ch today is a beautiful day char ch char p...