我试图编辑.dat文件,但它不工作。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我试图编辑.dat文件,但它不工作。相关的知识,希望对你有一定的参考价值。

我试着用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
");
            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;

     }
答案

这句话似乎有问题。

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

应该是的

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

总之,你好像是在试图... 附加 数据进入 StudentsFile.dat. 如果您使用 w 模式,它只会写而不会追加。你需要使用 "a" 模式,在这种情况下,你应该创建另一个文件指针,如图所示

因此,你应该创建另一个文件指针,如图所示。

FILE *fp2 = fopen("StudentsFile.dat", "a")

使用 fprintf() 对于 fp2 而非 fp1 在这种情况下。

在while循环中,你不需要任何的 scanf() 因为你正试图将数据追加到文件中。

注意: 你缺少了 %d 对于 stArray->idfprintf() 语句,别忘了关闭 fp2 之后 fp.

这里有一个明确的方法 补录.

以上是关于我试图编辑.dat文件,但它不工作。的主要内容,如果未能解决你的问题,请参考以下文章

反应:试图将 index.js 连接到数据库,但它不工作

试图在每 1 分钟后执行一项工作,但它不起作用?

我已经下载了猪,但它不工作

试图替换片段,但它一直显示相同的片段

试图显示2个表

我试图总结给定数组中的数字,使用 recursion ,尝试了这段代码,但它不起作用。为啥?