将控制字符传递给 c 程序

将控制字符传递给 c 程序

我尝试传递带有特殊字符的字符串,但不知何故我的程序将它们识别得太字面化了。这是我的程序。

int main(int argc, char *argv[])
{
    char    *str;
    char    *trim;
    char    *res;

    if (argc != 3)
        return (-1);
    str = argv[1];
    trim = argv[2];
    printf("Original string: %s\n", str);
    printf("Set of charcters to trim: %s\n", trim);
    res = ft_strtrim(str, trim);
    printf("Same string with trimed charcters: %s\n", res);
    return (0);
}

这是我的输出。

$ ./test_ft_strtrim.exec "lorem \n ipsum \t dolor \n sit \t amet" "\t \n"
Original string: lorem \n ipsum \t dolor \n sit \t amet
Set of charcters to trim: \t \n
Same string with trimed charcters: lorem \n ipsum \t dolor \n sit \t amet

我到处搜索,但一无所获 :C

答案1

与 C 无关。命令行来自操作系统。从文件中获取输入或在命令行中对其进行转义,然后在程序中取消转义。或者使用单引号。请参阅https://superuser.com/questions/163515/bash-how-to-pass-command-line-arguments-containing-special-characters

答案2

@tgkprog 感谢提供链接,现在就可以使用了。我所要做的就是将"字符更改为单引号,并$在字符串值之前添加字符:

$ ./test_ft_strtrim.exec $'lorem \n ipsum \t dolor \n sit \t amet' $'\t \n'
Original string: lorem 
 ipsum   dolor 
 sit     amet
Set of charcters to trim: 

Same string with trimed charcters: lorem 
 ipsum   dolor 
 sit     amet

相关内容