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