0

ここにいくつかのコードがあります:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

    int main (int argc, char *argv[])
    {
        char c;

        FILE *fp;

        fp = fopen(argv[1], "r");

        if (fp == NULL)
        {
            printf ("Errore nell'apertura del file %s\n\n", argv[1]);
            exit(EXIT_FAILURE);
        }

        while ( (c = getc(fp)) != EOF)
        {
            if (strcmp(c,argv[2]) == 0)
            {
                c = argv[3];
            }

            putchar(c);
        }

        return 0;
    }

最初の質問: ファイル (argv[1]) の argv[2] の一部の文字を argv[3] の他の文字に置き換える必要c = argv[3]があります。 「c」をargv[3]に書いた文字に置き換えますか??

EX: out.exe file.txt a b
    ------  -------- - -
    program file     1 2
    name    name     letters

2 番目の質問: argv[2] に 2 つの文字がある場合、最初の文字は置換する文字で、2 番目の文字は置換する文字です。

EX: out.exe file.txt ab
    ------  -------- --
    program file     1/2
    name    name     letters (both on argv[2])
4

1 に答える 1

3

argvへのポインタの配列ですchar。 ではなく、へのポインタargv[n]返します。ポインタが指す最初のものを取得したい場合は、それを逆参照します。charcharchar argv[n]

char c = *(argv[n]) // or argv[n][0]

それはあなたの2番目の質問にも答えるべきだと思います。

于 2012-06-21T20:10:52.590 に答える