csvファイルの読み込みについて
Posted: 2015年7月21日(火) 23:46
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WIDTH (4)
#define HEIGHT (3)
#define LENGTH (500) // 適切に決める
void openFile(FILE **fp)
{
*fp = fopen("test.csv", "r");
if (*fp == NULL) {
puts("file open error");
exit(1);
}
}
void readFile(FILE *fp, int (*num)[WIDTH])
{
char s[LENGTH], *dlm = ",", *p, *q;
int i, j;
for (i = 0; i < HEIGHT; i++) {
fgets(s, LENGTH, fp);
for (j = 0, q = s; j < WIDTH; q = NULL, j++) {
p = strtok(q, dlm);
num[i][j] = strtol(p, NULL, 10);
}
}
}
void printData(int (*num)[WIDTH])
{
int i, j;
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
printf("%d%s", num[i][j], (j == WIDTH - 1) ? "" : ",");
}
putchar('\n');
}
}
void closeFile(FILE *fp)
{
fclose(fp);
}
int main(void)
{
int num[HEIGHT][WIDTH];
FILE *fp;
openFile(&fp);
readFile(fp, num);
printData(num);
closeFile(fp);
return 0;
}