質問: "a"と始めの一文字しか配列に入りません。空白で区切る方法など、いい方法がありましたら教えてください。 よろしくお願いします。
回答: 補足します。 oh-orangeさんがポインタで記述してますが、 // 100回読み出す場合 read_t data[ 100 ]; int i; for ( i = 0 ; i < 100 ; i++ ){ readstring( str ); sscanf( str, "%s %d %s %d %d %d %d", data[i].a, &data[i].b, data[i].c, &data[i].d, &data[i].e, &data[i].f, &data[i].g ); } と書いても問題ないです。 読みやすさ、分かり易さで選んでください。 ちなみに書き忘れていたのですが、最初のプログラムで&a[i]でなぜ動いていたかを解説します。 &はポインタ化するための演算子ですが、a[i]をポインタ化するとaの配列のi番目を先頭とするポインタを得ることになります。 ようするにiだけポインタの先頭がずれることになりますが同じ配列にsscanfで格納されるので上書きされて文字列が壊されているプログラムだったのです。