gpt4 book ai didi

c++ - 摆脱字符串文字末尾的\0 的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:05 25 4
gpt4 key购买 nike

我正在尝试做类似的事情

strcmp(argv[3], "stdout")

然而,在命令行中我不想输入

stdout\0

去除字符串文字末尾的\0 的最佳方法是什么?

谢谢!

更新:

谢谢大家。我发现我的代码有什么问题......我应该使用

strcmp(argv[3], "stdout") == 0

感谢@Nicol Bolas

最佳答案

您不必在命令行中键入“stdout\0”。无论您的系统以何种方式为您的进程提供命令行参数(因操作系统而异)都会自动添加空字符。

如您所知,C 风格的字符串以空字符结束,在代码中写为'\0'。如果该字符不在字符串的末尾,诸如 strcmp 之类的函数将继续运行到字符串末尾之外,因为这样的字符串违反了约定。然而,由于终止空字符是 C 约定,编译器足够聪明,可以将空字符添加到字符串文字的末尾,系统也足够聪明,可以将空字符添加到存储在新创建的进程的内存。如果 argc 大于 3,并且您在程序命令行中键入的第三个参数是“stdout”,则调用 strcmp(argv[3], "stdout") 将返回 0,表示两个字符串匹配。

关于c++ - 摆脱字符串文字末尾的\0 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com