Input: Hello there boy(any 80 character string)
Expected output: boy there Hello
Current output: (nothing - does compile though) \
我的硬件提示:
编写一个程序,提示用户输入由一个或多个空格分隔的单词序列,其中每个单词都是字母数字字符序列。您可以假设输入的文本字符串不超过 80 个字符,每个单词不超过 20 个字符。使用 fgets() 命令读取输入文本字符串。例如,我们可以声明一个 char 数组 char sentence[81]; 然后使用 fgets(sentence,81,stdin); 从标准输入 stdin(即键盘输入)中读取最多 80 个字符到字符数组 sentence[] 中,这还将在数组末尾插入一个空字符(字符串终止字符);这就是为什么数组需要比输入的文本长一个字节的原因。您的程序应该以相反的顺序打印出单词,与输入的完全相同,每个单词之间只有一个空格。您可以假设没有输入标点符号或控制字符。您的程序应命名为 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;
}