我正在使用文件,这在编译后给了我一个分段错误错误。 我试图打开一个文件并将其保存在矢量中。另外我想用dinamic内存来分配它。
#include "stdio.h"
#include "stdlib.h"
main(){
int n,v[n],i,c,cant;
FILE*archivo;
archivo = fopen("vectores.dat","wb");
if(archivo == NULL)
{
printf("Error while opening");
exit(1);
}
printf("write the number of integers you want to save in the file");
scanf("%d",&cant);
for(i=0;i<cant;i++){
printf("write the number in the position: %d",i+1);
scanf("%d",v[i]);
}
c= fwrite(v,sizeof(int),n,archivo);
if(c<1){
printf("Error while writing");
exit(1);
}
}
答案 0 :(得分:2)
这是一个大问题:
int n,v[n],...
首先声明变量n
,但不要对其进行初始化,然后将v
声明为n
整数数组。这样做的问题是,由于n
未初始化,其值为不确定,并且您有undefined behavior。
您稍后再次使用n
,仍未进行初始化。
如果您的程序在任何地方都有未定义的行为,那么它的格式不正确,并且没有任何代码可以信任。