提供由不超过 100 个字符的单词组成的字符串。单词由拉丁字符组成,并用一个空格分隔。需要将仅包含单词回文的字符串输出到标准输出流。 源数据必须整体读入内存,所有操作都必须在内存中进行,在内存中得到结果然后打印。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int check(char str[])
{
int i, length;
length = strlen(str);
for (i = 0; i < length; i++)
if (str[i] != str[(length - 1) - i]) return 0;
return 1;
}
int main(void)
{
char str[100];
char* t;
gets(str);
t = strtok(str, " ");
while (t != NULL) {
if (check(t) == 1) {
printf("%s ", t);
}
t = strtok(NULL, " ");
}
_getch();
return 0;
}
这是我的代码(测试失败) 请帮我修复代码
最佳答案
- 例如,使用函数
getline(&buffer, &size, stdion)
代替fgets
。 check
函数中的for
循环工作正常,但解决了另一个问题,超出了您的预期。- 回文从头向前读或从尾向后读时相同的一个或一组单词。
关于c - 找到行中的回文并显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53482322/