【问题标题】:Usage of strcpy with pointers to characters将 strcpy 与指向字符的指针一起使用
【发布时间】:2017-04-09 08:17:44
【问题描述】:

为什么这段代码会崩溃?是不是 strcpy 没用好?

【问题讨论】:

标签: c arrays string strcpy string-literals


【解决方案1】:

变量msg1 指向一个字符串字面量占用的内存。字符串文字不可修改。任何修改字符串文字的尝试都会导致未定义的行为。

来自 C 标准(6.4.5 字符串文字)

  1. 如果这些数组的元素具有适当的值,则不确定这些数组是否不同。 如果程序试图修改这样的 数组,行为未定义。

请注意,如果您想使用标准 C 函数 strcpy 将字符串复制到字符数组,则该数组必须有足够的内存来容纳字符串,包括其终止零。

您可以通过将指针替换为字符数组来使您的代码有效。例如

char msg1[15] = "Hello World"; 
//...
strcpy( msg1, "Hello New York" ); 

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2022-11-11
    • 1970-01-01
    • 2020-03-27
    • 2018-01-03
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多