nを指定してメモリを確保,その分だけcsvファイルから配列に読み込んで出力するプログラムなのですが,
出力結果を見るとp[0]とp[1]に0、p[2]からcsvファイルの1行目が順番に格納されている状態になってしまいました.
csvファイルの中身は1から100まで順番に並んでいるものです.
(今回の出力は p[0]=0,p[1]=0,p[2]=1,p[3]=2,... といった感じになってしまっています)
p[0]=1,p[1]=2,....となるようにしたいのですが,このコードのどこがおかしいのでしょうか?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n;
int *a;
printf("要素数:");
scanf("%d", &n);
a = (int *)calloc(n, sizeof(int));
if (a == NULL)
printf("メモリ確保に失敗\n");
else{
FILE *file;
int i;
//ファイルopen
file = fopen("test.csv","r");
if(file == NULL){
printf("ファイルオープンに失敗\n");
}
else{
for(i=0; i<n; i++)
fscanf(file,"%d", &a[i]);
fclose(file);
}
free(a);
}
int i;
for(i=0; i<n; i++)
printf("a[%d]=%d\n", i, a[i]);
return 0;
}