ここから本文です

C言語が趣味なサンデープログラマーです。 以下のプログラムをテキスト、ファイル...

アバター

ID非公開さん

2017/2/2113:58:15

C言語が趣味なサンデープログラマーです。
以下のプログラムをテキスト、ファイル処理にするには、どうしたらいいのでしょうか?

456、7890,2233、などの数字を列挙したテキストを一括して入力、二進数でOUTしたいのですが、どうすればいいのかわかりません。

/*10進数を2進数に変換 */
#include <stdio.h>

int main(void)
{
/* 変数の宣言 */
int i, decimal;
int binary[32];

/* 10進数の入力 */
printf("10進数 = ");
scanf("%d", &decimal);

/* 10進数→2進数の変換 */
for(i=0;decimal>0;i++){
binary[i] = decimal % 2;
decimal = decimal / 2;
}

/* 2進数の出力 */
printf(" 2進数 = ");
while( i>0 ){
printf("%d", binary[--i]);
}
printf("\n");

return 0;
}

閲覧数:
105
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

roc********さん

2017/2/2114:48:35

テキストファイル内の形式(フォーマット)はどのようになっているのでしょう?
『456、7890,2233、』のように【 全角数字の文字列+読点区切り】ですか?
それだと全角数字を半角数字に変換する手間が増えてしまいますよ

上記プログラムに当てはめやすいのは、
456
7890
2233



のように【各行が半角数字の文字列だけ】で構成されているフォーマットにするのがおそらく一番簡単でしょう


/* 変数の宣言 */
int i, decimal;
int binary[32];
//ファイルを扱うときは FILE ポインタ(FILE*)を使います
FILE *ifp; //入力ファイルポインタ
FILE *ofp; //出力ファイルポインタ

//fopen() でファイルを開く
ifp = fopen("入力ファイル名","r"); //r=読み取り用
ofp = fopen("出力ファイル名","w"); //w=書き込み用

// feof()でファイルの最後まで読み込んだか判別できる
while(!feof(ifp)){

//fscanf() はファイル用の scanf()
/* 10進数の入力 */
fscanf(ifp,"%d",&decimal);//ファイルから数値を1つ読み込む

/* 10進数→2進数の変換 */
for(i=0;decimal>0;i++){
binary[i] = decimal % 2;
decimal = decimal / 2;
}

//fprintf() はファイル用の printf()
fprintf(ofp,"10進数 = %d\n",decimal);//10進数の値も出力する

/* 2進数の出力 */
fprintf(ofp," 2進数 = ");
while( i>0 ){
fprintf(ofp,"%d", binary[--i]);
}
fprintf(ofp,"\n");

}

//fclose() でファイルを閉じる
fclose(ifp);
fclose(ofp);

  • アバター

    質問者

    ID非公開さん

    2017/2/2116:17:08

    テキストファイル内の形式(フォーマット)はどのようになっているのでしょう?

    >上記プログラムに当てはめやすいのは、
     456
     7890
     2233
     ・
     ・
     ・
    このような形で入力、出力したいです。私の使用環境がwindowsでBCCなのですが、きれいに出すことは、可能でしょうか?


  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2017/2/22 23:03:57

これからCの勉強を継続していく元気をもらいました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる