C - fgets和fputs没有编辑文件数据

时间:2017-04-18 13:49:13

标签: c fgets fseek fputs

完整代码:https://pastebin.com/NpspcJB8

我不确定我是否正确使用fgets()fputs(),但我需要这个或类似的东西来编辑我的程序文件。在我的程序中,我将创建一个文件,但是当我在程序中生成文件内容时,我得到了这个:

文件输出

Space: D44 Customer Name: empty Registration number: empty

Space: D45 Customer Name: empty Registration number: empty

Space: D46 Customer Name: empty Registration number: empty

Space: D47 Customer Name: empty Registration number: empty

Space: D48 Customer Name: empty Registration number: empty

Space: D49 Customer Name: empty Registration number: empty

Space: D50 Customer Name: empty Registration number: empty
 empty
 empty
 empty
 empty
 empty
 empty
 empty

当我在程序中添加停车位时会发生这种情况,我相信这只会改变数组值。我需要删除文件输出中的empty,这是我在我创建的函数中使用我刚才提到的函数在代码中尝试的:

int CheckExtraInput() {

    fptr=fopen("parking_spaces.txt", "r+");

    if (fptr==NULL) {
        printf("Error! File does not exist");
        return 1;
    }   

    char extraInput[] = " empty\n";

// http://www.cplusplus.com/reference/cstdio/fgets/ 

// https://www.tutorialspoint.com/c_standard_library/c_function_strchr.htm  

//  char *s = strchr(extraInput, '\n');
//  if(s) *s = '\0';

//  fseek(fptr, 7, SEEK_SET);
    while (fgets(extraInput, 8, fptr) != NULL) {

        fputs(" aaa ", fptr);

    }

}

我使用" aaa "来测试此代码,而不是它。我相信我可以使用更多来实现这一点,但我不确定是什么;我之前使用fseek()得到了类似的结果。

我只需要找到一种方法让程序转到文件的末尾,如果它开始检测empty,它需要将其删除以节省存储空间。

0 个答案:

没有答案