如何在行尾添加文本

时间:2017-10-22 01:14:46

标签: c csv

例如我有

的test.txt
test1
test2

在每行的末尾我想添加一些文字

我的代码是:

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

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

我的输出是:

test1
newText

结果应该是:

test1newText
test2newText

4 个答案:

答案 0 :(得分:3)

您无法使用单个文件执行此操作。

以下是您需要做的事情:

  • 打开临时输出的辅助文件
  • 逐行阅读实际文件
  • 对于每一行,将该行的副本写入辅助输出
  • 写完这一行后,写下你要追加的后缀
  • 转到下一行,直到您处理整个文件
  • 处理完整个文件后,关闭两个文件,然后移动辅助文件代替原始输入。
  

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

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

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

答案 1 :(得分:2)

您无法从输出文件中读取。 可以打开文件进行读写,但这是一个高级主题,并不适合文本文件。

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

如果这是程序的全部功能,请考虑将其作为过滤器(使用标准流);这是经验丰富的用户所期望的,并保存了一些错误检查。

答案 2 :(得分:1)

最终,我成功了

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);
        }
    }

感谢您的支持☺

答案 3 :(得分:0)

您需要更改fopen调用以从文件中读取并使用fputc函数重新输出您读取的字符,如下所示:

<script type="text/javascript" src="@routes.Assets.versioned("inline.bundle.js")"></script>

正如其他地方所指出的那样,你不能以你想要的方式同时读写文件,所以我把它改为从stdin读取以说明代码