[tab=30]late,遅れた
[tab=30]latest,最新の
[tab=30]current,現在通用している
上記のデータを用いて以下のプログラムを実行するとうまくいきません。
#include<stdio.h>
#define MAX_WORDS 3
int main()
{
FILE *fp;
char words[MAX_WORDS][10], meaning[MAX_WORDS][10];
int i;
if((fp=fopen("test.csv","r"))==NULL){
printf("ファイルがありません\n");
return 1;
}
for(i=0; i<MAX_WORDS; i++){
fscanf(fp,"%[^,],%[^,]",words[i], meaning[i]);
}
for(i=0; i<MAX_WORDS; i++){
printf("%s %s\n",words[i], meaning[i]);
}
fclose(fp);
getchar();
return 0;
}
wordsやmeaning配列に格納される文字列も意図したものではないのだと思います。
late 遅れた
latest
フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ01フフフフハainク est
フフフフフフフフフフフフフフフフフフフフ01フフフフハainク フフフフフフフフフフフフフフフフフフフフlate
ですが、以下のように編集を加えると、ある程度うまくいきます。
test.csv
[tab=30]late,遅れた,
[tab=30]latest,最新の,
[tab=30]current,現在通用している,
各行の終わりにコンマを入れました。
↓ソースコードの16行目にコンマを追加しました。
#include<stdio.h>
#define MAX_WORDS 3
int main()
{
FILE *fp;
char words[MAX_WORDS][10], meaning[MAX_WORDS][10];
int i;
if((fp=fopen("test.csv","r"))==NULL){
printf("ファイルがありません\n");
return 1;
}
for(i=0; i<MAX_WORDS; i++){
fscanf(fp,"%[^,],%[^,],",words[i], meaning[i]);
}
for(i=0; i<MAX_WORDS; i++){
printf("%s %s\n",words[i], meaning[i]);
}
fclose(fp);
getchar();
return 0;
}
ですが、20行目のprintf("%s %s\n",words, meaning);で1回しか改行していないはずなのに、なぜか2回改行されています。late 遅れた
latest 最新の
current 現在通用している
多分meaning[]配列が\nも含んでしまっているのだと思います。(含まないようにしたいです)
目標は、
のように表示させることです。late 遅れた
latest 最新の
current 現在通用している
あとtest.txtの各行の終わりにコンマを加えずに、この目標を達成したいです。
お願いします!