- C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
146 :デフォルトの名無しさん (アウアウ Sa0f-ldQr)[sage]:2016/07/21(木) 21:18:50.48 ID:1ZCtMixLa - sscanfの扱いについて、
n = sscanf(buf, "%s %d %s %s", data[count].name, &data[count].birth, data[count].tel, data[count].mail); count++; 人物のデータ、名前、生年月日、電話番号、メールアドレスを格納する構造体変数dataがあります。 fgetsでファイルからデータをbufに読み込み、bufから各情報をsscanfで格納していきます。 このときループの中で、sscanfが毎回bufの先頭から読んでしまうため、同一人物のデータがすべて書き込まれてしまいます、次のデータに移動したい場合はどうすればよいでしょうか? データファイルは taro 19940625 123-4567 taro@abc.ef のように書いてあります。
| - C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
148 :デフォルトの名無しさん (アウアウ Sa0f-ldQr)[sage]:2016/07/21(木) 21:52:07.96 ID:1ZCtMixLa - >>147
ループのそとでfgetsを使いストリームからbufにデータをいれます。 ループ内でsscanfを使ってbufに格納されたデータを取り出していきます。 fgets(buf, STRING_MAX, fp); while(1){ n = sscanf(buf, "%s %d %s %s", data[count].name,&data[count].birth, data[count].tel, data[count].mail); count++; 次のデータとは taro 19940625 123-4567 abc@ef nanaco 19900514 321-7654 fec@ba .... と、データが続いてますが太郎の情報についてはうまく読み取れますが構造体配列の2番目以降についても太郎の情報が格納されてしまいます。 ループするたびにsscanfでbufから読み取っているので当たり前と言えば当たり前なのですがこれをうまくシフトさせたいのです。
| - C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
150 :デフォルトの名無しさん (アウアウ Sa0f-ldQr)[sage]:2016/07/21(木) 22:27:01.26 ID:1ZCtMixLa - >>149
ありがとうございます。 把握は出来てないのでこれをもとに勉強してみます! ちなみにデータが taro 19940625 123-4567 abc@ef nanaco 19900514 321-7654 fec@ba と改行されていても可能でしょうか?
| - C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
151 :デフォルトの名無しさん (アウアウ Sa0f-ldQr)[sage]:2016/07/21(木) 22:28:15.58 ID:1ZCtMixLa - >>149
あ、ミスです... taro 19940625 123-4567 abc@ef nanaco 19900514 321-7654 fec@ba と、改行していても、です
| - C言語なら俺に聞け 136 [無断転載禁止]©2ch.net
153 :デフォルトの名無しさん (アウアウ Sa0f-ldQr)[sage]:2016/07/21(木) 22:57:24.82 ID:1ZCtMixLa - >>152
有難うございます
|
|