我正在创建一个反转每一行输入的程序。
这是我的代码:
#include <stdio.h>
#include <string.h>
int main()
{
char c[100];
while((fgets(c,100,stdin)) != NULL)
{
c[strlen(c) - 1] = '\0';
for(int i=strlen(c); i>=0; i--)
{
printf("%c",c[i]);
}
}
}
我的测试输入:
abc 123
lorem ipsum
dolor sit amet
我可以打印第一行反转就好了:
abc 123
321 cba
但是当我开始输入下一行输入时,它就在反向输入旁边,因此测试输入的完整程序运行如下:
abc 123
321 cbalorem ipsum
muspi meroldolor sit amet
tema tis rolod
什么时候看起来像这样:
abc 123
321 cba
lorem ipsum
muspi merol
dolor sit amet
tema tis rolod
作为一种解决方法,我在输出之后再次按 Enter 以便能够在其自己的行上输入下一行输入,但我不明白为什么我需要这样做
答案 0 :(得分:2)
你的代码完全按照它所说的去做。因此,如果您想在反向字符串之后使用换行符,请在http PUT "http://localhost:8080/presence/active_watchers?filter={'presentity_uri':'sip:service-1@opensipstest.org'}" event_id=12
http PATCH "http://localhost:8080/presence/active_watchers?filter={'presentity_uri':'sip:service-1@opensipstest.org'}" event_id=12
循环之后使用以下内容:
for
你需要记住,putchar('\n');
是一个换行符没有保证。因此,请在使用c[strlen(c) - 1]
:
'\0'
此外,如果您遇到C89,您可能还需要从size_t len = strlen(c);
if(len && c[len - 1] == '\n')
c[len - 1] = '\0';
返回一个值。只需添加
main
在return 0; /* Usually, 0 indicates success */
的末尾,以消除警告:
main
请注意,source_file.c: In function ‘main’:
source_file.c:8:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
隐含在C99及更高版本中。