トップページ > プログラム > 2016年07月21日 > 1ZCtMixLa

書き込み順位&時間帯一覧

3 位/109 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000002305



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (アウアウ Sa0f-ldQr)
C言語なら俺に聞け 136 [無断転載禁止]©2ch.net

書き込みレス一覧

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
有難うございます


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。