無法AC,關於使用fgets碰到的問題——末尾多一個換行符

題目是輸入一串字符串,包含空格,裏面有多個單詞,將每個單詞翻轉輸出,並且單詞之間的空格要與原文一致。
寫的時候沒有使用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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章