例如我有
的test.txttest1
test2
在每行的末尾我想添加一些文字
我的代码是:
fp = fopen("test.txt", "w");
while ((ch=getc(fp)) != EOF)
if (ch == '\n')
fprintf(fp, "newText");
我的输出是:
test1
newText
结果应该是:
test1newText
test2newText
答案 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读取以说明代码