当试图在C语言中改变一个char指针的值时,出现未处理的异常。

问题描述 投票:0回答:1

我正在使用VISUAL STUDIO 2013的基本指针程序。

#include <stdio.h>
void try1(char *c);

int main()
{
    int stop;

    char * c = "rotem";

    try2(c);

    printf_s(" %s \n \n ", c);

    scanf_s("%d", &stop);
    return 0;
}

void try2(char *c)
{

    *c = (char)(*c + 1);

}

然而,我得到这个messege。

Unhandled exception at 0x009F152A in Project32.exe: 0xC0000005: Access violation writing location 0x009F5860.

我应该怎么做?

c++ c visual-studio-2013
1个回答
0
投票

"rotem" 是一个文字字符串,它在内存中是只读的,你不能修改它。

复制它,或者使用一个数组,因为在你的情况下,你不需要增加它的大小,以取代

char * c = "rotem";

 char c[] = "rotem";

同时更换

void try1(char *c);

void try2(char *c);
© www.soinside.com 2019 - 2024. All rights reserved.