C程序。文件。

时间:2014-09-27 08:59:15

标签: c file segmentation-fault

我正在使用文件,这在编译后给了我一个分段错误错误。 我试图打开一个文件并将其保存在矢量中。另外我想用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);
    }

}

1 个答案:

答案 0 :(得分:2)

这是一个问题:

int n,v[n],...

首先声明变量n,但不要对其进行初始化,然后将v声明为n整数数组。这样做的问题是,由于n未初始化,其值为不确定,并且您有undefined behavior

您稍后再次使用n,仍未进行初始化。

如果您的程序在任何地方都有未定义的行为,那么它的格式不正确,并且没有任何代码可以信任。