独習Cという本でC言語を勉強しているのですが、次のような問題があります。
練習問題9.6.2
コマンドラインで指定されたファイルから、やはりコマンドラインで指定された整数値を検索する
プログラムを作成してください。値が見つかったら、それがファイルの先頭から何バイト目にある
かを表示してください。
で、解答例として以下のようなものが載っていました。
c
1 2/* apdC-135.c */ 3#include <stdio.h> 4#include <stdlib.h> 5 6int main(int argc, char *argv[]) 7{ 8 FILE *fp; 9 unsigned char ch, val; 10 11 if(argc!=3) { 12 printf("使用法: <プログラム名> <ファイル名> <整数値>"); 13 exit(1); 14 } 15 16 if((fp = fopen(argv[1], "rb"))==NULL) { 17 printf("ファイルを開くことができません\n"); 18 exit(1); 19 } 20 21 val = atoi(argv[2]); 22 23 while(!feof(fp)) { 24 ch = fgetc(fp); 25 if(ch == val) 26 printf("%ld のアドレスに値が見つかりました\n", ftell(fp)); 27 } 28 29 fclose(fp); 30 31 return 0; 32} 33
で、このプログラム文をコマンドラインから次のように実行します。
apdc-135.c.exe aaa.txt 3
aaa.txtの中身は
abcdefghijklmnopqrstu
vwxyz
0123456789
です。予想では
33(らへん)のアドレスに値が見つかりました
と、コマンドプロンプトに表示されると思ってたのですが1行空白があるだけで何も表示されません。
僕のやり方が間違っているのでしょうか?それともプログラム文がおかしいのでしょうか?
本の正誤表には該当するものはありませんでした。
http://www.shoeisha.co.jp/book/detail/9784798102962
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/05 06:16