字串問題 將乙個字串中的單詞進行倒置

2022-04-10 00:47:30 字數 2988 閱讀 5405

2013-09-15 14:49:09

將乙個字串中的單詞進行倒置,標點符號也倒置,

如輸入:hello,nice to meet you!

輸出:!you meet to nice,hello

將**中的while ( *pcur && isalphabet(*pcur) )

換成while ( *pcur && *pcur!= ' ' ) 

即可實現翻轉單詞,標點符號不倒換,

即輸入:hello,nice to meet you!

輸出:you!meet to hello,nice

注意testdriver函式中不能定義輸入為:

pchar srcstrarray = ;

因為這樣的話,每個char*的指標指向的是靜態區,靜態區的資料就不能改變,在執行時到reversestring(char *psrc,size_t begin,size_t end)函式的 *(pstr + index) = *(psrc + end - index);就會出錯,因為該語句試圖改變靜態區的資料,是不允許的。

這樣的錯誤,類似於下面的:

char *pstr1 = "hello";

char *pstr2 = "hello";

可以用*pstr2 = 『a』;改變pstr2指向的字串,改變後為"aello";

但不可改變pstr1指向的字串的內容,因此*pstr1 = 『a』;是不允許的。

1 #include 2 #include 3

using

namespace

std;45

//翻轉首位址為psrc,索引從begin到end的字元

6void reversestring(char *psrc,size_t begin,size_t end)721

}2223//

判斷字元是否為字母

24bool isalphabet(char

ch)25

2829

//翻轉單詞

30char * reverseword(char *pstr) //

不能定義為const

3139

40 reversestring(pstr,0,len - 1

);41 cout4243

char *pcur = (char *)pstr;

44int wordbegin = 0;45

int wordend = 0;46

47while (*pcur)

4855

56 wordend = pcur - 1 - pstr; //

pcur與pstr相等時,wordend定義為size_t會出錯

5758

if (wordbegin 5962

63 ++pcur;64}

65return

pstr;66}

6768

69 typedef char *pchar;

7071

void

testdriver()72;

74char srcstrarray[100] = ;

75 size_t arraylength = 4;76

77pchar srcstr;

7879

for (size_t index = 0;index < arraylength;++index)

8087}88

89int

main()

90

測試結果:

the source string

is : 0123456

6543210

the reversed

string

is : 6543210

the source

string

is : i am a good boy!

!yob doog a ma i

the reversed

string

is : !boy good a am i

the source

string

is : hello,nice to meet you!

!uoy teem ot ecin,olleh

the reversed

string

is : !you meet to nice,hello

the source

stringis:

the reversed

stringis:

請按任意鍵繼續. . .

將**中的while ( *pcur && isalphabet(*pcur) )

換成while ( *pcur && *pcur!= ' ' ) 

即可實現翻轉單詞,標點符號不倒換,測試結果:

the source string

is : 0123456

6543210

the reversed

string

is : 0123456

the source

string

is : i am a good boy!

!yob doog a ma i

the reversed

string

is : boy!good a am i

the source

string

is : hello,nice to meet you!

!uoy teem ot ecin,olleh

the reversed

string

is : you!meet to hello,nice

the source

stringis:

the reversed

stringis:

請按任意鍵繼續. . .

將乙個字串逆序

這個題要我自己寫還不太有思路,可能不會想到寫三個函式,而且這個 也沒有執行出來 include include include pragma warning disable 4996 有乙個字元陣列的內容為 student a am i 請你將陣列的內容改為 i am a student 要求 不能...

在乙個字串中尋找另外乙個字串

在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...

將乙個字串中的字元替換成另乙個字串

被替換的字串當然不僅僅是空格,上面只是個例子 include include include using namespace std int findnumberfirst const char str,const char dest,vector pvec else return count in...