我正在尝试将我的代码输入到除了输入之外的所有内容,然后反转并打印它,而没有多余的行。我已经将所有\ n取出来看看是否有帮助,但是我总是在打印前换行。我猜想它在用户输入的末尾打印空字符,但是我不知道如何摆脱它。
这是我到目前为止所拥有的
#include <stdio.h>
#include <string.h>
void revStr(char str[]);
int main(void) {
char str[50];
fgets(str, 50, stdin);
if ((strcmp(str, "quit\n") == 0) || (strcmp(str, "q\n")==0) || (strcmp(str, "Quit\n")== 0)){
printf("\n");
return 0;
}
else{
revStr(str);
return main();
}
}
void revStr(char str[])
{
int arrSz = strlen(str);
int i;
for(i = arrSz-1; i >= 0; i--){
if(str[i] != '\0')
printf("%c",str[i]);
}
}
查看此if语句
if ((strcmp(str, "quit\n") == 0) || (strcmp(str, "q\n")==0) || (strcmp(str, "Quit\n")== 0)){
您会发现该条件中使用的每个字符串文字都具有换行符'\n'
。
这意味着字符数组str具有此字符,并且此字符在以相反顺序输出数组的函数中输出。
您可以通过以下方式将字符从数组中删除,然后再将其传递给函数
str[ strcspn( str, "\n" ) ] = '\0';