编写一个C语言程序:创建一个文本文件strs.txt,strs.txt的第一行为该文件包含字符串的个数n,从第二行开始,给出n个字符串,使用循环和调用函数,分别判断每个字符串是否为回文串,并且将判断结果写入另一个文件is_palindrome.txt,判断结果为yes或no。 提示: 使用fgets和fputs完成输入和输出 使用<stdlib.h>中的函数atoi将字符串转化成整型 fgets会读入每行最后的换行符,所以在使用fgets读入一个字符串后,将真实字符串的最后一位(此时应该是’\n’)置为’\0’,即str[strlen(str) - 1] = '\0’; 记得fclose
时间: 2023-06-14 15:06:07 浏览: 107
下面是实现上述功能的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
int is_palindrome(char *str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 2]) {
return 0;
}
}
return 1;
}
int main() {
FILE *fp_in = fopen("strs.txt", "r");
FILE *fp_out = fopen("is_palindrome.txt", "w");
if (fp_in == NULL || fp_out == NULL) {
printf("File open error!\n");
return 0;
}
char line[MAX_LEN];
fgets(line, MAX_LEN, fp_in);
int n = atoi(line);
for (int i = 0; i < n; i++) {
fgets(line, MAX_LEN, fp_in);
line[strlen(line) - 1] = '\0'; // 去掉换行符
if (is_palindrome(line)) {
fputs("yes\n", fp_out);
} else {
fputs("no\n", fp_out);
}
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
```
程序的主要思路是,先打开输入和输出文件,从输入文件中读入字符串的个数,然后循环读入n个字符串,对每个字符串调用is_palindrome函数判断是否为回文串,并将判断结果写入输出文件。需要注意的是,在读入每个字符串后,需要将最后的换行符去掉。最后,记得关闭文件指针。
阅读全文