使用我的strupr实现时程序崩溃

时间:2017-10-13 13:31:42

标签: c++ pointers toupper

我已经从字符串库编写了我的strupr函数实现。当我调用此函数时,程序崩溃。我已经找到了另一种让它工作的方法,但我想知道为什么这个版本不起作用。程序在执行*str = (*str) - 32;指令时完全崩溃。

#include <iostream>

using namespace std;

char * my_strupr(char * str)
{
    char * result = str;

    while(*str != '\0')
    {
        if(*str >= 'a' && *str <= 'z') *str = (*str) - 32;
        str ++;
    }

    return result;
}

int main()
{
    char * str = "some text";
    cout << my_strupr(str);
    return 0;
}

在这种情况下我必须使用指针,它们在我的任务中是必需的。

1 个答案:

答案 0 :(得分:0)

编译器将字符串存储在只读内存中,并且您正在尝试修改此内存的seg-fault。 这将在here

中讨论