前提・実現したいこと
ここに質問の内容を詳しく書いてください。
C言語で.csvファイルをJSON化する為のプログラムを作っています.
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
gccでコンパイルをした時点で
test.c:73:110: warning: more '%' conversions than data arguments [-Wformat]
という警告が発生し,プログラムを実行すると
hello world
Segmentation fault: 11
というメッセージが表示されます.
gcc test.c test.c:71:185: warning: more '%' conversions than data arguments [-Wformat] while (fscanf(f, "%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,]", ~^~~ test.c:73:110: warning: more '%' conversions than data arguments [-Wformat] printf("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, \n", ~^ 2 warnings generated. ./a.out hello world Segmentation fault: 11
該当のソースコード
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4 5struct Settings{ 6 char toiletDur; 7 char durTime; 8 char otherData; 9 char date; 10}; 11 12struct Sleep{ 13 char start1; 14 char end1; 15 char durTime1; 16 char start2; 17 char end2; 18 char durTime2; 19}; 20 21struct Toilet{ 22 char start1; 23 char end1; 24 char start2; 25 char end2; 26 char start3; 27 char end3; 28 char start4; 29 char end4; 30 char start5; 31 char end5; 32 char start6; 33 char end6; 34 char start7; 35 char end7; 36 char start8; 37 char end8; 38}; 39 40struct Bath{ 41 char start1; 42 char end1; 43 char durTime1; 44}; 45 46struct Option{ 47 char remarks; 48 char name; 49}; 50 51int main(void){ 52 53 struct Settings set; 54 struct Sleep slp; 55 struct Toilet toi; 56 struct Bath bat; 57 struct Option opt; 58 59 60 FILE *f; 61 char file_name[] = "test3.csv"; 62 63 printf("hello world\n"); 64 65 /* ファイルオープン */ 66 if ((f = fopen(file_name, "r")) == NULL) { 67 fprintf(stderr, "%s\n", "error: can't read file."); 68 return EXIT_FAILURE; 69 } 70 71 while (fscanf(f, "%[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,], %[^,]", 72 &set.date, &slp.start1, &slp.end1, &slp.durTime1, &slp.start2, &slp.end2, &slp.durTime2, &toi.start1, &toi.end1, &toi.start2, &toi.end2, &toi.start3, &toi.end3, &toi.start4, &toi.end4, &toi.start5, &toi.end5, &toi.start6, &toi.end6, &toi.start7, &toi.end7, &toi.start8, &toi.end8) != EOF){ 73 printf("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, \n", 74 &set.date, &slp.start1, &slp.end1, &slp.durTime1, &slp.start2, &slp.end2, &slp.durTime2, &toi.start1, &toi.end1, &toi.start2, &toi.end2 , &toi.start3, &toi.end3, &toi.start4, &toi.end4, &toi.start5, &toi.end5, &toi.start6, &toi.end6, &toi.start7, &toi.end7, &toi.start8, &toi.end8); 75 } 76 77 fclose(f); 78 79 return 0; 80 81}
試したこと
セグメンテーションフォルトに至る様な箇所を探したが見当たらなかった.
他の.csvファイルを試してみたが,そちらも上手くデータが出力されなかった.
補足情報
当方プログラミング初心者です.何か重要な所を見落としている可能性があります.ご教示頂ければと思います.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/11 04:43
2019/07/11 05:01
2019/07/11 05:02
2019/07/11 05:05
2019/07/11 05:12
2019/07/11 05:16