【发布时间】:2018-03-28 23:16:01
【问题描述】:
我正在编写一个程序来读取文件并确定一个单词是否是回文。我遇到了一个问题,即最后一个令牌有一个尾随换行符并且不会注册为回文。
这是文件输入:
leVel CompUtER Science theORY radar
这是我的代码:
#include<stdio.h>
#include<string.h>
void palindrome(char str[]){
int length = strlen(str);
int i = 0;
int j = length - 1;
for(i = 0; i < length; i++){
if(str[i] != str[j]){
printf("String %s is not a palindrome.\n", str);
return;
}
j--;
}
printf("String %s is a palindrome.\n", str);
return;
}
int main() {
char line1[100];
fgets(line1, 100, stdin);
printf("%s", line1);
char *token;
token = strtok(line1, " ");
while(token != NULL){
printf("%s\n", token);
palindrome(token);
token = strtok(NULL, " ");
}
感谢您的帮助!
【问题讨论】:
-
使用
" \n"广告分隔符,它也会去掉换行符。 -
@Pablo 有一个足够的答案,但是从缓冲区中修剪换行符和更多内容的可重用代码是
buffer[strcspn(buffer, "\r\n")] = 0;