控制字符串指针strupr()

时间:2013-12-07 01:12:39

标签: c string pointers

当我在Windows上使用codeblock构建此代码时,它会显示一个控制台窗口并停止运行,请帮我修复它

#include <stdio.h>
#include <string.h>

int main ()
{
    char *str="these";
    strupr(str);
    printf("%s", str);
  return 0;
}

1 个答案:

答案 0 :(得分:1)

问题在于你的字符串定义,而不是使用strupr,因为上面的一些评论已经强调了它。您的str指针确实指向只读内存,因此崩溃。 看看引用c-faq.com的这个question,或者直接在C standard中:“数组的内容是可修改的。另一方面,声明

    char *p = "abc";

使用“指向char的指针”类型定义p并将其初始化为指向类型为“array of char”且长度为4的对象,其元素使用字符串文字初始化。如果尝试使用p修改数组的内容,行为未定义。“

要使代码工作,只需定义一个非const数组:

    char str[]="these";