我想创建一个删除与文件中用户输入相同的String的程序 以下是文件中的内容
G12
G13
G14
例如用户输入G13,预期输出如下:
G12
G14
我知道制作一个临时文件,但不知道如何逐行获取字符串,因为我使用这些代码打印文件内容
if(file!=NULL)
{
while ((c = getc(file)) != EOF)
putchar(c);
fclose(file);
}
所以基本上我只是逐个字母地阅读所有文件内容(不知道如何让它逐字逐句地阅读
提前致谢
答案 0 :(得分:1)
简单的逐行样本
#include <stdio.h>
#include <string.h>
char *esc_cnv(char *str){
char *in, *out;
out = in = str;
while(*in){
if(*in == '\\' && in[1] == 'n'){
*out++ = '\n';
in += 2;
} else
*out++ = *in++;
}
*out = '\0';
return str;
}
int main(void){
FILE *fin = stdin, *fout = stdout;
char line[1024];
char del_str[1024];
char *p, *s;
int len;
int find=0;//this flag indicating whether or not there is a string that you specify
fin = fopen("input.txt", "r");
fout = fopen("output.txt", "w");//temp file ->(delete input file) -> rename temp file.
printf("input delete string :");
scanf("%1023[^\n]", del_str);
esc_cnv(del_str);//"\\n" -> "\n"
len = strlen(del_str);
while(fgets(line, sizeof(line), fin)){
s = line;
while(p = strstr(s, del_str)){
find = 1;//find it!
*p = '\0';
fprintf(fout, "%s", s);
s += len;
}
fprintf(fout, "%s", s);
}
fclose(fout);
fclose(fin);
if(find==0)
fprintf(stderr, "%s is not in the file\n", del_str);
return 0;
}
答案 1 :(得分:0)
正如迈克尔所说的那样。在文件上,您只能执行写入和读取操作。所以你必须阅读char,当你找到你不想写的确切词时,就不要写它。否则你写它:)