我使用以下代码将结构数组插入到文件中但它崩溃了:
void SaveInFile(List * pl)
{
int i;
int s = ListSize(pl);
file = fopen("myFile.txt", "w"); //3shan aktb 3la file mn gded
for (i = 0; i <= s; i++) {
file = fopen("myFile.txt", "a");
fprintf(file, "IDOfprocess%s/n", pl->entry[i].ID);
fprintf(file, "IDOfprocess%s/n", pl->entry[i].BurstTime);
}
fclose(file);
}
知道如何解决这个问题吗?
答案 0 :(得分:1)
您的for
循环已到达s
,并且您从0
开始(因此您正在处理s+1
元素,而不是s
元素
所以它应该是
for( i=0;i<s;i++){
答案 1 :(得分:1)
您正在多次打开文件而不关闭它。 这样做:
void SaveInFile(List* pl)
{
int i;
int s=ListSize(pl);
file=fopen("myFile.txt","w");//3shan aktb 3la file mn gded
fclose(file);
for( i=0;i<=s;i++){
file=fopen("myFile.txt","a");
fprintf(file,"IDOfprocess%s/n",pl->entry[i].ID);
fprintf(file,"IDOfprocess%s/n",pl->entry[i].BurstTime);
fclose(file);
}
}
如果不关闭文件,则不会将任何未写入的输出缓冲区的内容写入文件。
但你应该做的是打开文件一次并执行追加操作:
void SaveInFile(List* pl)
{
int i;
int s=ListSize(pl);
file=fopen("myFile.txt","w");//3shan aktb 3la file mn gded
fclose(file);
file=fopen("myFile.txt","a");
for( i=0;i<=s;i++){
fprintf(file,"IDOfprocess%s/n",pl->entry[i].ID);
fprintf(file,"IDOfprocess%s/n",pl->entry[i].BurstTime);
}
fclose(file);
}