c - 用 "argv[2]"替换一个字符

标签 c file argv putchar getc

我这里有一些代码:

#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[3] 中的一些其他字符替换文件 (argv[1]) 中 argv[2] 中的一些字符...我知道 c = argv[3] 是一个大错特错的恐怖事情,但是......我如何用我在 argv[3] 中写的字符替换我的“c”??

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

第二个问题:如果在 argv[2] 中有 2 个字符,第一个是要替换的字符,第二个是我必须替换的字符,我该怎么写? ?

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

最佳答案

argv 是指向 char指针数组。 argv[n] 返回指向 char指针,而不是 char。如果你想获得 指针 argv[n] 指向的第一个 char 然后取消引用它:

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

我相信这也应该回答您的第二个问题。

关于c - 用 "argv[2]"替换一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11145929/

相关文章:

c++ - C vector 错误 'char(*)[]: unknown size' - vector 删除迭代器超出范围

java - 通过Junrar解压rar文件然后删除压缩包

database - 基于选项卡的行拆分会错过空列 - Perl

c++ - 接受标准输入或 CLI 参数的设计模式

c - 包含 C 中每个可能的构造的引用代码

c - 小端到 uint,字节数不确定

c - 我需要在C中添加字符串字符。A + B必须= C。字面意思

java - 使用 DocumentBuilder 解析 InputStreamReader

c - 指向结构 argv 赋值的指针

c - 如何计算 C 中的 argc