カンマ区切りのCSVからカンマまでの文字列を2次元配列にいれたくpの2次元配列を初期化して、その後ファイルを読み込み入れようと思ったのですが上手くいきません。
ヒントを頂けると嬉しいです。よろしくお願いします。
今は一文字ずつ読み込んで分岐処理でやろうと思っていましたが、一文字づつカウントアップしてしまいます。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int height = 11; //行数
int(*p)[1400]; //要素数
//行数×要素数のメモリを確保し、要素数が1400を1つの塊とした配列を11個用意している
//メモリを要素数より多めにとらないとエラーがでる。
p = (int (*)[1400])calloc(height * 1600, sizeof(int));
if (p == NULL)
puts("領域の確保に失敗しました");
else {
int i, j;
for (i = 0; i <= height; i++)
for (j = 0; j <= 1400; j++)
p[i][j] = 0;
/*for (i = 0; i <= height; i++)
for (j = 0; j <= 1400; j++)
printf("p[%d][%d] = %d\n", i, j, p[i][j]);*/
}
FILE *fp;
int c,k,h;
int column = 0;
int row = 0;
if ((fp = fopen("./file.csv", "r")) == NULL) {
printf("ファイルをオープンできません");
return(-1);
}
while ((c = fgetc(fp)) != EOF) {
if (c == ',') {
column++;
}
else if(c == '\n'){
row++;
column = 0;
}
else {
p[row][column] = (char)c;
printf("p[%d][%d] = %c\n", row,column,p[row][column]);
}
}
fclose(fp);
free(p);
return(0);
}