本文介绍了是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中修改字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 18:02