如何在

如何在

问题描述:

例如我在每一行的末尾有如何在

test1 
test2 

TEST.TXT行的末尾添加文本,我想添加一些文字

我的代码是:

fp = fopen("test.txt", "w"); 

while ((ch=getc(fp)) != EOF) 
    if (ch == '\n') 
     fprintf(fp, "newText"); 

我的输出是:

test1 
newText 

ŧ他的结果应该是:

test1newText 
test2newText 
+0

我对你是否想要将文本追加到文件末尾或是否要将文本附加到文件中每行的末尾感到有点困惑。 – MFisherKDX

+0

到每行的末尾 – Fela93

+0

你的逻辑有点偏离。您正在抓取char检查,如果它是换行符,并且如果是,则编写新的信息。 –

你不能用一个单一的文件做。

以下是你需要做的:

  • 打开辅助文件临时输出
  • 逐行读取
  • 每行的实际文件行写行的拷贝到辅助输出
  • 写入行写,你想
  • 转到追加到下一行,直到处理整个文件后缀后
  • 完成整个文件的处理后,请关闭这两个文件,然后移动辅助文件以代替原始输入。

如何避免新行?我成功地复制[文字]但是当我试图在每行的末尾添加一些文字,它的新线

这将启动是因为您在复制的文本中包含了行尾字符。

如果您逐字读取,请不要在看到它们时复制'\n';如果您使用fgets进行阅读,请检查最后一个字符,如果碰巧是'\n'fgets将它包括在其返回值中),则跳过它。

+0

我现在就试试 谢谢 – Fela93

+0

如何避免新行?,我成功复制 ,但是当试图在每行末尾添加一些文本时,它从新行开始 – Fela93

+0

@ Fela93请参阅编辑。 – dasblinkenlight

你不能像这样读取你的输出文件。它可能打开文件进行读写,但这是一个高级主题,并不适合文本文件。

正常的方法是写入另一个文件,然后如果需要替换原件。请注意,您必须发出您读取的所有字符您的额外文本。

如果这是程序的全部功能,请考虑将其设置为过滤器(通过使用标准流)。这是有经验的用户所期望的,并节省了一些错误检查。

您需要更改fopen的调用从文件中读取和使用的fputc函数重新输出你读的字,就像这样:

fp = fopen("test.txt", "r"); 

while ((ch=fgetc(stdin)) != EOF) { 
    if (ch == '\n') { 
    fprintf(fp, "newText"); 
    } 

    fputc(ch, fp); 
} 

fprintf(fp, "newText"); 

如在别处指出的那样,你不能同时读取和写入你想要的方式做一个文件,所以我改变了它从标准输入读来说明代码

最终,我有成功

if (!strcmp(fileName, SWM_DEBUG)) 
    { 
     fp = fopen(fileName, "r"); 
     fpOut = fopen("tmp.txt", "w"); 

     while ((ch = fgetc(fp)) != EOF) 
     { 
      if (ch == '\n') 
       fprintf(fpOut, "TEST"); 

      fputc(ch, fpOut); 
     } 
    } 

感谢您的支持☺