我试图编辑.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->id
在 fprintf()
语句,别忘了关闭 fp2
之后 fp
.
这里有一个明确的方法 补录.
以上是关于我试图编辑.dat文件,但它不工作。的主要内容,如果未能解决你的问题,请参考以下文章