再次优化代码,使得其做到每一个字母和数字都反序的输出。示例:如sfile.txt中12 23 34 dfile.txt反序存入:34 23 12
时间: 2024-04-11 22:33:42 浏览: 118
使输入的字符串反序存放代码
下面是优化后的代码,使其能够将每个数字和字母都反序输出到文件中:
```C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
void reverseString(char *str) {
int length = strlen(str);
for (int i = 0; i < length / 2; i++) {
char temp = str[i];
str[i] = str[length - i - 1];
str[length - i - 1] = temp;
}
}
void reverseFile(FILE *sfile, FILE *dfile) {
char buffer[MAX_SIZE][MAX_SIZE];
int count = 0;
// 读取sfile.txt中的内容,存储到buffer数组中
while (fgets(buffer[count], MAX_SIZE, sfile) != NULL) {
count++;
}
// 将buffer数组中的内容按反序写入dfile.txt中
for (int i = count - 1; i >= 0; i--) {
int length = strlen(buffer[i]);
reverseString(buffer[i]);
// 去除换行符
if (buffer[i][length - 1] == '\n') {
buffer[i][length - 1] = '\0';
}
fputs(buffer[i], dfile);
fputs(" ", dfile);
}
}
int main() {
FILE *sfile, *dfile;
// 打开sfile.txt和dfile.txt
sfile = fopen("sfile.txt", "r");
dfile = fopen("dfile.txt", "w");
// 检查文件是否成功打开
if (sfile == NULL || dfile == NULL) {
printf("文件打开失败!\n");
exit(1);
}
// 调用函数实现反序写入操作
reverseFile(sfile, dfile);
// 关闭文件
fclose(sfile);
fclose(dfile);
printf("内容已反序写入dfile.txt中!\n");
return 0;
}
```
这次的代码在原有的基础上增加了一个`reverseString()`函数,用于反序字符串。在`reverseFile()`函数中,每次读取一行内容后,调用`reverseString()`函数将字符串反序。然后,根据需求去除换行符,并将反序后的内容逐个单词以空格分隔写入到`dfile.txt`文件中。
请将上述代码复制粘贴到DevC++中,然后保存为一个C文件。再创建一个`sfile.txt`文件作为输入文件,其中每个数字和字母都用空格分隔。运行程序后,它将会将`sfile.txt`文件中的每个数字和字母都反序输出到`dfile.txt`文件中,并且每个数字和字母之间用空格分隔。
阅读全文