- 締切済み
助けてください!!
c言語について、解けない問題があります。教えてください。 問題:第1引数に指定したファイルからバイナリーモードで1バイトずつファイルを読み込み、ファイルの内容を16進数で示した物を第2引数に指定したファイルに書き込む、プログラムを作成せよ。ただし、16バイトごとに改行を入れること。 <ファイルイメージ「file2.txt」> aaaaa bbbbb ccccc ddddd eeeee 実行 >file3.exe file1.txt file2.txt <ファイルイメージ「file2.txt」> 61 61 61 61 61 0D 0A 62 62 62 62 62 0D 0A 63 63 63 63 63 0D 0A 64 64 64 64 64 0D 0A 65 65 65 65 65 0D 0A
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
UNIXユーザーでしたら↓の簡単なプログラムを使って ./a.out<exefile1>file2.txt のようにリダイレクトして終わりです。 /* Hexadecimal display program by Mac OSX * file name: lql.c * compile: gcc lql.c * execution: ./a.out<read_file */ #include <stdio.h> int main(void) { int c, n; printf("00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f\n"); printf("-----------------------------------------------\n"); n = 0; while ((c = getc(stdin)) != EOF) { if (++n == 16) { printf("%.2x\n", c); n = 0; } else printf("%.2x ", c); } if (n != 0) printf("\n"); return 0; } 丸投げの質問はWindowsユーザーのようですが、↑をベースに改良を加えることになります。なお、なぜそのようなプログラムになるかの学習はきちんと行ってくださいネ。 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *fp_write, *fp_read; int c, n; if (argc != 3) { printf("Parameter error\n"); return 0; } if ((fp_write = fopen(argv[--argc], "w")) == NULL || (fp_read = fopen(argv[--argc], "r")) == NULL) { printf("Can't open %s\n", argv[argc]); exit(1); } fprintf(fp_write, "00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f\n"); fprintf(fp_write, "-----------------------------------------------\n"); n = 0; while ((c = getc(fp_read)) != EOF) { if (++n == 16) { fprintf(fp_write, "%.2x\n", c); n = 0; } else fprintf(fp_write, "%.2x ", c); } if (n != 0) fprintf(fp_write, "\n"); fclose(fp_write); fclose(fp_read); return 0; }
- kmee
- ベストアンサー率55% (1857/3366)
>友達のためにこの質問を出して、わかる人が教えてくれれば助かります では、そのお友達に、この問題のどこがわかっていて、どこがわからないかを聞いてきてください。 それと、わからないなりにもプログラムを作ったと思うので、それをもらって来てください。 自分の理解度を確認する、というのは、プログラムを勉強中のそのお友達のためにもいいと思います。
- SnowShower
- ベストアンサー率40% (140/348)
それで、どの辺が助けてほしい内容でしょうか? 「全て」というのはなしで。 少なくとも、学校の課題なら全てはともかくとして一部の機能については学習していると思うので。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1335864938 ふーん。
補足
すみません、http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1335864938ってどういう意味ですか?誤解していると思いますが、友達のためにこの質問を出して、わかる人が教えてくれれば助かります 。