我尝试用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;
}
答案 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 的明确方法。