• ベストアンサー

C言語の質問です

ファイルのデータの読み込みについて教えてください。 データ例 000045 002957 012257 013204 146280 427929 このようなデータがあるとします。 fscanfで読み込んで保存したのですが、 45 2957 12257 13204 146280 427929 このように前に付いていた0が削除されてしまいます。 最初のデータ(前に0がついたままのデータ)のまま読み込んで保存するにはどうしたらいいでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • not_ace
  • ベストアンサー率52% (35/67)
回答No.3

読み込んで保存するというのがいまいちよくわかりませんが。 プログラム中でも頭に0がついた状態で扱いたいということでしょうか? それとも、プログラム中では数値として扱い、出力するときに頭に0をつけたいということでしょうか? 前者だとすればscanfするときに文字列として読み書きする必要があるのでそれぞれ、読み込み時と保存時に%dから%sにしてやる必要があります。 後者だとすれば、ファイルに出力する際に「%d」としているところを「%06d」にしてやると良いです。 余談ですが、現在どんなソースコードになっているのかを質問と一緒に書いていただけるとアドバイスしやすいかと思います。

rikerume01
質問者

お礼

皆様ありがとうございました。 [%06d]というのをヒントに改良してみたらできました。

その他の回答 (2)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>このようなデータがあるとします。 >fscanfで読み込んで保存したのですが、 書いたコードを見せてください。話はそこからです。

rikerume01
質問者

補足

FILE *fp; fp=fopen("ファイル名","r"); if(fp==NULL) { printf("file open error!\n"); exit(1); } while(fscanf(fp,"%s %s %lf %lf %lf %lf %lf %lf %lf %lf %lf",a,s,&dy1,&dy2,&dy3,&dy4,&dy5,&dy6,&dy7)!=EOF) //左から2つ目だけほしいので全部のデータを読み込んでから左から2つ目だけ出力しています printf("%s\n",s); } dclose(fp); return 0;

  • TT414
  • ベストアンサー率18% (72/384)
回答No.1

printf("%06d\n");

関連するQ&A