c 翻轉乙個長句中的每個單詞

2022-07-14 17:54:11 字數 938 閱讀 4686

問題:

輸入:「how are    you     baby--   "

輸出:」woh era    uoy     --ybab   "

#include#include

#define swap(a,b) (a)^=(b);(b)^=(a);(a)^=(b)

char* sentencereverse(char*input)

if(*(++r)=='

\0') break

; }

return

inp;

}int

main()

輸出結果:

xu@xu-thinkpad-x61:~/algorithm$ gcc sentencereverse.c

xu@xu-thinkpad-x61:~/algorithm$ ./a.out

input is:1oow lsije -----

test1 result is:woo1 ejisl -----

input is:sdklf -----

test2 result is:flkds -----

總結:一,當函式引數是test2時(注意它宣告時是char * 型別),記憶體做了以下操作:1.在堆上儲存test2指標。2.將其內容:"sdklf "儲存在「常量區」(具體我也不清楚,反正該區域內容不能修改)。找到下面連線,問題解釋的比較清晰:

二,當函式sentencereverse()對陣列char *test2內容修改時,總會報錯「

段錯誤 (核心已轉儲)」。

三,解決方案:在堆上重新開闢新空間進行操作。如上函式中新建陣列inp[ ];

四,當函式引數是test1時(注意是它宣告時是char [ ]型別)就不存在記憶體「段錯誤」問題。其內容儲存在堆上可以直接修改。

深藏功與名!

2019 04 16 倒序取出每個單詞的第乙個字母

encoding utf 8 倒序取出每個單詞的第乙個字母 方法一 倒序取出每乙個單純,然後取出對應單詞的第乙個字母 def flash back letters s re s s.split target str for i in range len re s 1,1,1 倒序的開始一定要減掉1,...

C語言 最後乙個單詞的長度

給定乙個僅包含大小寫字母和空格 的字串 s,返回其最後乙個單詞的長度。如果不存在最後乙個單詞,請返回 0。示例 輸入 hello world 輸出 5分析得 一共有5種不同的情況,分別是 1.全為空格。2.字串最後有空格,並且最後乙個單詞前邊也有空格 例 a bc 3.字串最後有空格,最後乙個單詞前...

最後乙個單詞的長度

給定由大寫,小寫字母和空格組成的字串,返回最後乙個單詞的長度。如果輸入中不存在單詞,返回 000。注意 單詞 是指不包含空格符號的字串 例如 對於字串 hello world 不帶引號 那麼返回的結果是 555 對於字串 abc abc 不帶引號 那麼返回的結果就是 333。輸入格式 輸入僅一行,為...