【发布时间】:2011-10-12 06:54:07
【问题描述】:
我想使用 C 将文本文件中包含 # 符号的行更改为 heet。
我已经尝试过这种方式,但它并没有彻底工作,它只是替换字符并覆盖而不是覆盖整个字符串,就像我想要的那样。
是否有任何其他技巧可以从文件中删除或删除整行?所以,我们可以很容易地替换它。
myfile.txt: (执行前)
Joy
#Smith
Lee
Sara#
Priyanka
#Addy
代码:
#include <stdio.h>
#include <string.h>
int main() {
FILE *pFile;
fpos_t pos1, pos2;
int line = 0;
char buf[68]
char *p;
char temp[10] = "heet";
pFile = fopen("myfile.txt", "r+");
printf("changes are made in this lines:\t");
while (!feof(pFile)) {
++line;
fgetpos(pFile, &pos1);
if (fgets(buf, 68, pFile) == NULL)
break;
fgetpos(pFile, &pos2);
p = strchr(buf, '#');
if (p != NULL) {
printf("%d, " , line);
fsetpos(pFile, &pos1);
fputs(temp, pFile);
}
fsetpos(pFile, &pos2);
}
fclose(pFile);
return 0;
}
myfile.txt: (执行后)
Joy
heetth
Lee
heet#
Priyanka
heety
输出:
changes are made in this lines: 2, 4, 6,
myfile.txt: (我要获取)
Joy
heet
Lee
heet
Priyanka
heet
【问题讨论】:
-
用字符串数组备份代码中的所有文件然后用空白文件替换整个文件然后将备份写入文件并应用我们需要的更改是否很好???