CSVファイルの内容を構造体に格納したい(Unix使用)。
こんにちは。私は30代の男性です。
「名前」「身長」「体重」が記載されたCSVファイルの内容を読み取って、構造体の「name」「height」「weight」に格納するプログラムを作っています。CSVの内容は
A,175,80
B,167,89
C,155,45
・
・
・
Z,188,70
だと仮定します。数値が読み取れているか、下記のように「tp = strtok(file_image, ",\n" );」の前後に「printf("%s\n", file_image);」を置いてみたら、strtok前では全て表示されるのに、strtok後では「ABC」しか表示されません。これでは全てのデータを構造体に格納できないので、困っています。
1.どのようにすれば、数字も取り出せる(読み取れる)でしょうか?
2.効率よく構造体に格納するには、どのようにしたらよいでしょうか?
アドバイスを頂ければ幸いです。宜しくお願いいたします。
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fp = NULL;
int rtn = 0;
if ((fp = fopen(argv[1], "r")) == NULL)
{
printf("ファイルオープンに失敗しました。\n");
return 1;
}
if (argc != 2)
{
printf("ERROR: オプションの数に過不足があります。\n");
return 1;
}
rtn = change_csv(fp);
return 0;
}
int change_csv(FILE *fp)
{
int i;
int j;
char file_image[256]; /* 読み込んだ先のメモリの領域 */
char *tp;
for (i = 0; i <= 256; i++)
{
if (fgets(file_image, 256, fp) == NULL)
{
if (ferror(fp) != 0)
{
printf("ERROR: 読み込みに失敗しました。\n");
return 1;
}
}
if (feof(fp) != 0)
{
break;
}
printf("%s\n", file_image);
tp = strtok(file_image, ",\n" );
printf("%s\n", file_image);
}
fclose(fp);
return 0;
}