本文介绍了是argv中修改字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我刚写了一个小程序,在C读取命令行参数,没有什么太困难。我也对其进行修改,例如改变参数为大写的第一个字符。
我知道,你不应该修改字符串,因为它可能会导致未定义的行为,所以只是想知道,如果在 *的argv []
是文本字符串你不应该改变。
INT主(INT ARGC,CHAR *的argv [])
解决方案
从N1570的C11标准草案,§5.1.2.2.1/ 2:
They are modifiable. That means they are not string literals.
But be careful: the upper citation only refers to pointers to strings, excluding the obligatory null pointer at argv[argc]
.
From the C11 standard draft N1570, §5.1.2.2.1/2 (same as above):
Notes:
Something regarding this sentence:
"can"? It does always. Undefined behavior includes expected, as if well-defined, and unexpected behavior.
这篇关于是argv中修改字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!