C 反转一系列字符串
我遇到了一个问题,我的字符串系列没有按我想要的方式打印出来。它只打印最后一个字符串并反转最后一个字符串,但不打印之前的任何字符串。有人能帮我吗C 反转一系列字符串,c,C,我遇到了一个问题,我的字符串系列没有按我想要的方式打印出来。它只打印最后一个字符串并反转最后一个字符串,但不打印之前的任何字符串。有人能帮我吗 #include <stdio.h> #include <string.h> void reverse(char strings[80], int start, int end); int main (void){ char strings[80]; printf("\tEnter a string to rever
#include <stdio.h>
#include <string.h>
void reverse(char strings[80], int start, int end);
int main (void){
char strings[80];
printf("\tEnter a string to reverse: \n");
while( scanf ("%s", strings) !=EOF);
reverse(strings, 0, strlen(strings)-1);
printf("\tThe reverse strings: \n%s\n",strings);
return 0;}
void reverse(char strings[80], int start, int end)
{
char A;
if (start >= end)
return;
A = *(strings+start);
*(strings+start) = *(strings+end);
*(strings+end) = A;
reverse (strings, ++start, --end);
}
您对reverse和printf的调用不在while循环中,因此对于读取的最后一个字符串,每个调用只调用一次 应该是
while (scanf ("%s", strings) != EOF)
{
reverse(strings, 0, strlen(strings)-1);
printf("\tThe reverse strings: \n%s\n",strings);
}
我只是在这里猜测,当扫描%s时,字符串=EOF;,它会扫描字符串直到EOF,而不做任何处理,并用下一个字符覆盖最后一个字符,这并没有什么帮助。如果在控制台中键入80个“A”字符,会发生什么情况?实际上,这将以相反的方式打印您输入的每一行,直到您按住CTRL-D EOF键,但我不确定您是否真的在尝试这样做。我已经尝试过了。这次它改变了只允许我输入一个字符串的部分。我很困惑?它假设首先要求打印一系列用户想要反转的字符串。然后倒转那些弦。最初没有EOF输入,它只接受一个字符串。不清楚你想做什么。如果您试图读取由空格分隔的一组字符串,则必须使用strotk将它们全部拆分。问题是,当您使用scanf%s字符串时,它将整行视为一个完整的字符串,因为空格仍然是字符串中包含的字符。