2017-01-25 8 views
0

たstatments in.txt out.txt
は、out.txtファイルに、az範囲内にある文字のみを書き込みます。
プログラムa-9 in.txt out.txt
は、-z0-9範囲にある文字だけをout.txtファイルに書き込みます。
入力されたすべてのデータが正しいとみなすことができます。ので、ここでタスクは、コマンドライン引数で 例を与えている シンボルのみをテキストファイルから読み込むプログラムを作成し、他のテキストファイルに書き込む ある

は私の試みです:

int main(int argc, char** argv) 
{ 
    FILE *fileIn, *fileOut; 
    fileIn = fopen(argv[2] , "rb"); 
    fileOut = fopen(argv[3] , "wb"); 
    char *arguments = argv[1]; 

    printf("%d - %d\n", arguments[0], arguments[2]); 
    char a; 
    do 
    { 
     a = fgetc(fileIn); 
     if(a > arguments[0] && a < arguments[2]) 
      fputc(a, fileOut); 
    } while (a != EOF); 

    fclose(fileIn); 
    fclose(fileOut); 
    return 0; 
} 

私の最初のアイデアは、引数を取り、それが何らかの形でAZに取り組んでいます
アスキーリミッタとしてそれらを使用していたが、他では
質問ですdosn't:
どうすれば改善できますか?
これを行う方法を変更する必要がありますか?あなたが引数としてa-9を与える場合には、数値、文字('9'から'0')のASCIIコード値がすべて小文字ローマ字('z'から'a')のものよりも小さいので、

答えて

0

私は次のような何かにあなたのifステートメントを変更します:

if(arguments[2] >= '0' && arguments[2] <= '9') { 
    if((a >= arguments[0] && a <= arguments[0]) || (a >= '0' && a <= arguments[2])) 
    { 
     fputc(a, fileout); 
    } 
} 
else if(arguments[2] >= 'a' && arguments[2] <= 'z' && arguments[0] >= 'a' && arguments[0] <= 'z') { 
    if(a >= arguments[0] && a <= arguments[2]) { 
     fputc(a, fileout); 
    } 
} 
+0

これは、私はあなたに感謝魔法のように、作業者を思い付くことができなかったものです! – noissue

0

、プログラムが正しく動作しません。

たとえば、値のif文は、0x30( '1'は0x31など)、 'a'は0x61( 'b'は0x62など)です。全く実行されません。

ifステートメントの条件式は、検査対象の文字がargument[0]またはargument[2]の場合、0と評価されます。それを変更したいかもしれません。

関連する問題