C语言文件操作 fprintf操作 为何没效果?

我想写一个txt文件操作的程序,目的是把所有的换行符替换成"\n ",但是我写的代码并没有用, 请诸位大神帮忙
#include <stdafx.h>
#include <stdlib.h>
#include <fstream>
#include <string.h>

int main()
{
char filename[100];
FILE *fp;
printf("\nEnter a filepath/filename:\n");
gets(filename);
fp=fopen(filename, "rt");
char a;
while((a=fgetc(fp))!=EOF)
{
if (a == '\n')
fprintf(fp, "\n ");
else
fprintf(fp, "%c", a);
}
fclose(fp);

system("pause");
return 0;
}

第1个回答  2015-07-09
r是只读的模式 写不了 rt没见过,还有你直接这样替换,我感觉不行。追问

你好,感谢回答。我把r改成r+也不行。。请问不这样替换的话应该用什么方法?

追答

你先判断一下,这个文件打开正常吗,我认为是这样,你先把文件里的内容,全部复制出来,再修改,修改好后再全部存进去。

追问

应该是正常的,如果我吧fprintf改成printf这个程序能正常运行,正常在命令框里显示,但是用fprintf就不行了,txt文件根本没变。。。

追答

重写了一段代码 默认路径是c:\data.txt
#include
#include
#include

int main()
{
char filename[100] = "c:\\data.txt", buff[100], buff1[100];
int i, j;
FILE *fp;
printf("\nEnter a filepath/filename:\n");
//gets(filename);
fp=fopen(filename, "r");

if(fp == NULL)
{
printf("file error!");
return 0;
}

i = 0;

while((fgets(buff + i, 100 - i, fp)) != NULL)
{
i = strlen(buff);
}

fclose(fp);

for(i = 0, j = 0; i < strlen(buff); i++, j++)
{
if(buff[i] == '\n')
{
buff1[j++] = buff[i];
buff1[j] = ' ';
}
else
buff1[j] = buff[i];
}

buff1[j] = '\0';

fp = fopen("c:\\data.txt", "w");

if(fp == NULL)
{
printf("file write open error!");
return 0;
}

fprintf(fp, "%s", buff1);

fclose(fp);

return 0;
}

本回答被提问者和网友采纳
相似回答