Input: Hello there boy(any 80 character string)
邏輯錯誤
Expected output: boy there Hello
Current output: (nothing - does compile though) \
我的HW提示:
收件,提示用於由一個或多個空格分隔單詞序列的用戶的程序,每個單詞都是一個字母數字字符序列。您可以假定輸入的文本字符串長度不超過80個字符,每個單詞長度不超過20個字符。使用fgets()命令讀取輸入文本字符串。例如,我們可以聲明一個char數組char [81];然後使用fgets(句子,81,stdin);從標準輸入標準輸入(即鍵盤輸入)中最多讀取80個字符到字符數組句子[]中,該字符串還將在數組末尾插入一個空字符(字符串終止字符);這就是爲什麼數組需要比輸入文本長一個字節的原因。你的程序應該以相反的順序打印出單詞,正如每個單詞之間只有一個空格輸入一樣。您可以假定沒有輸入標點符號或控制字符。您的程序應該命名爲reverse_words.c,並且您的輸出應該與下面示例中顯示的輸出完全匹配。
我看了其他的例子,只是想用我所知道的來製作這個程序。對我來說,它似乎工作,但它沒有。有人能幫我找到我的邏輯關閉嗎?
#include <stdio.h>
int main()
{
char sentence[81];
char space[81];
int i , h = 0, j, start;
printf("Enter a sentance (up to 80 characters): ");
fgets(sentence,81,stdin);
//starting backwards go from element 80 to find first non space
//make array to store element numbers of sentence in new array
for(i = 80; i >= 0; i--)
{
if(sentence[i] != ' ' || sentence[i] != '\0')
{ start = i;
//printf("%i", start);
}
if(i < start && i == ' ')
{
space[h] = i;
h++;
}
}
h = 0;
//start at first space and print characters till next space, repeat till all words printed
for(j = space[h]; j < space[h + 1]; h++)
{
printf("%c", sentence[j]);
if (j == space[h + 1])
printf(" ");
}
return 0;
}
這是什麼意思'我==」「'你正在做in'如果'條件 – Omkant
再次看我認爲它應該是句[我] ==''。我試圖找出單詞之間的所有空格。防爆。嗨'_'there'_'boy –
如果它不能改變問題的目的,或者問題仍然存在,您可以隨時編輯您的帖子並修復錯誤。 – ForceMagic