コマンドラインから、コピー元のファイル名とコピー先のファイル名を指定し、実行するとコピー元のファイルの中身のtab文字がスペースに置き換えられて、コピー先のファイルにコピーされるというプログラムがあります。
本の解答からソースコードをそっくりそのまま写したので間違えているはずはありません。コンパイルも通ります。しかし、何度実行しても、tab文字はスペースに置き換えられず、そのままコピーされます。
tab文字をスペースに置き換えるという他のプログラムも試したのですが、こちらも出来ませんでした。プログラム以外の所が悪いのでしょうか。
下のプログラムは本の解答にあったtab文字をスペースに置き換えるやつです。
教えていただけると嬉しいです。
lang
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4 5int main (int argc, char *argv[]) 6{ 7 FILE *from, *to; 8 char ch; 9 int tab, count; 10 11 /* コマンドラインに指定された引数の数が正しいかどうか調べる */ 12 if (argc != 3) { 13 printf("使用法:<プログラム名> <コピー元> <コピー先>\n"); 14 exit(1); 15 } 16 17 /* コピー元ファイルを開く */ 18 if ((from = fopen(argv[1], "r")) == NULL) { 19 printf("コピー元ファイルを開くことができません\n"); 20 exit(1); 21 } 22 23 /* コピー先ファイルを開く */ 24 if ((to = fopen(argv[2], "w")) == NULL) { 25 printf("コピー先ファイルを開くことができません\n"); 26 exit(1); 27 } 28 29 /* ファイルをコピーする */ 30 count = 0; 31 while (!feof(from)) { 32 ch = fgetc(from); 33 if (ch == '\t') { 34 for (tab = count; tab<8; tab++) 35 fputc(' ', to); 36 count = 0; 37 } else { 38 if (!feof(from)) fputc(ch, to); 39 count++; 40 if (count == 8 || ch == '\n') count = 0; 41 } 42 } 43 fclose(from); 44 fclose (to); 45 return 0; 46}
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。