我尝试编辑.dat文件,但是它不起作用

时间:2020-05-20 16:06:08

标签: c file

我尝试用C编辑文件,但是它不起作用。如果文件不存在,则代码将创建该文件,但无法对其进行编辑。我试图更改文件打开状态,但是什么也没有。这是代码:

typedef struct{
    char name[MAXSTRING];
    int id;
  }student;


int main(int argc, const char **argv){

        i = 0;
        FILE *fp;
        if ( (fp=fopen("StudentsFile.dat", "w") ) == NULL ){
            printf("FILE CAN NOT OPEN");
        }else{
             printf("INSERT NAME AND ID OF THE STUDENT\n");
            student *stArray = (student *) malloc(sizeof(student));
            scanf("%s" "%d", &stArray->name, &stArray->id);
            while (!feof(stdin))
            {

                fprintf( fp ,"%s", stArray->name );
                scanf("%s" "%d", &stArray->name, &stArray->id);
                printf("%s ", &stArray->name);

            }
            fclose (fp);
         }
             return 0;

     }

1 个答案:

答案 0 :(得分:0)

该声明似乎令人怀疑:

scanf("%s %d", &stArray->name, &stArray->id);

应该是:

StudentsFile.dat

无论如何,似乎您正在尝试将数据附加w中。如果您使用"a"模式,它将只写但不会追加。在这种情况下,您需要使用FILE *fp2 = fopen("StudentsFile.dat", "a") 模式。

因此,您应该创建另一个文件指针,如下所示:

fprintf()

在这种情况下,请为fp2使用fp1而不是scanf()

在while循环中,您不需要任何%d,因为您正在尝试将数据追加到文件中。

注意:您在stArray->id语句中缺少fprintf()的{​​{1}},并且不要忘记在{{1 }}。

这里是append text into a file 的明确方法。