gpt4 book ai didi

c - 删除一行文本文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:09 25 4
gpt4 key购买 nike

所以,我正试图从一个编号的文本文件中删除一个文件。\n 之后的每个条目都是一个新数字。我试图获取文件,将每一行存储在一个字符串中,然后通过省略不需要的行并打印其余行来创建一个新文件。不幸的是,指针给我带来了麻烦。它删除一个,并在正确的位置返回另一个,但没有使用正确的字符串或返回一个空白文件。

fp=fopen("data.txt", "r+");
fpo=fopen("out.txt", "w");

printf("Please enter number of the student whose data you would like to delete.\n");

scanf("%d", &i);

while(fgets(str, 128, fp)){
if((atoi(str)!=i))
{
fputs(str, fpo);
}
}
fclose(fp);

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

while(fgets(str, 128, fpo)){
if((atoi(str)!=i))
{
fputs(str, fp);
}
}
fclose(fp);

fclose(fpo);

最佳答案

您拥有的东西过于复杂(并且不适用于大文件,并且会浪费内存)。为什么不逐行复制文件,不复制然后要排除的文件?

FILE *f_in = fopen("infile.txt", "r");
FILE *f_out = fopen("outfile.txt", "w");
// ...error checking comes here...

char buf[LINE_MAX];

while (fgets(buf, sizeof buf, f_in)) {
if (!(/* omission condition here */)) {
fputs(buf, f_out);
}
}

fclose(f_in);
fclose(f_out);

关于c - 删除一行文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com