題目是輸入一串字符串,包含空格,裏面有多個單詞,將每個單詞翻轉輸出,並且單詞之間的空格要與原文一致。
寫的時候沒有使用string的輸入,而是選擇了char數組的輸入。
樣例測試hello world->olleh dlrow是沒有問題的,就以爲沒問題,但是一直通不過。
調試的時候,變量也是有些神奇,不過這個是系統bug。
直到輸入了123 23 34,輸出的時候321 32 這個43換行了,這就不太對勁了。多出了一個\n換行符。
查詢了下,fgets獲取的時候,會把換行符也放入,主要是因爲它本身就是處理文件的,文件換行,自然是要帶上換行符的。
這道題,硬卡了一個小時,總算是找到原因了,都要覺得測試數據坑我了,到頭來,還是自己是小丑啊!
#include <iostream>
#include <cstring>
using namespace std;
int main() {
/*
123 34 23
*/
char a[505] = {0};
fgets(a, 505, stdin);//末尾會多拿一個'\n'
int len = strlen(a);
a[len-1]='\0';
strcat(a, " ");
for (int i = 0; i < len; i++) {
if (a[i] == ' ') {
for (int j = i-1; j >= 0; j--) {
if(a[j]==' '){
break;
}
cout << a[j];
}
if(i!=len-1){
cout << a[i];
}
}
}
return 0;
}