上面的代码仍然无法做到反序输出。如sfile文件夹中是123456,dfile中输出的为12345,优化代码使其做到反序输出
时间: 2024-04-11 14:33:39 浏览: 104
非常抱歉,我之前的回答有误。以下是修正后的代码,使其能够正确地反序输出到文件中:
```C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
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--) {
// 去除换行符
buffer[i][strcspn(buffer[i], "\n")] = '\0';
fputs(buffer[i], dfile);
fputs("\n", 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;
}
```
这次的代码修正了去除换行符的方式,使用了`strcspn`函数来找到换行符的位置,并将其替换为`\0`,从而去除了换行符。现在,程序应该能够正确地将`sfile.txt`文件中的内容反序输出到`dfile.txt`文件中。请注意,在运行程序之前,确保`sfile.txt`文件中每行的结尾都有一个换行符。
阅读全文