【发布时间】:2014-01-08 14:31:51
【问题描述】:
我使用以下代码将结构数组插入文件但它崩溃了:
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);
}
知道如何解决这个问题吗?
【问题讨论】:
-
如果
ListSize为具有 N 个元素的列表返回大小 N,则:for( i=0;i<=s;i++)→for( i=0;i<s;i++),否则您将得到 分段错误。跨度> -
您在循环内调用
fopen()(即,对于每个条目)。删除第二个fopen()。另外,ID和BurstTime是什么数据类型?您正在使用 %s 这意味着以空字符结尾的字符串,所以希望它们确实是字符串。 -
1) fopen 首先在“a”模式下打开文件,除非你想“截断”它,但无论如何你不能打开它 s+1 次,因此 2) 从内部删除 fopen lloop
-
哎哟...我敢打赌这会泄漏内存...调用
fopens次没有fclose...不要那样做哦,检查@ 987654332@ 也由fopen返回。如果是NULL,就出问题了
标签: c file segmentation-fault