程序更改字符串Upper char to Lower char得到错误

时间:2012-03-20 04:03:14

标签: c++ string visual-studio-2010

我在debuging时总是收到错误信息,显示“在Utou.exe中0x004113e的未处理异常:0xC0000005:访问冲突写入位置0x00415835”。在“* s - = 32;”行 谁可以帮助解决问题?

#include "stdafx.h"
#include <iostream>
using namespace std;
void ToUpperPtr(char* s)
{
    //char *a;
    //a=s;
    while(*s != '\0')
    {

        if(*s >='a' && *s <='z')
            *s -= 32;      
        s++; // 
    }

    //printf("%s",a);
}

int _tmain(int argc, _TCHAR* argv[])
{

    char *a="AbcdfrDFD";

    ToUpperPtr(a);
    //printf("%s",a);
    int i;
    scanf("%d",&i);
    return 0;
}

1 个答案:

答案 0 :(得分:3)

简单来说,您正在尝试更改一个允许您访问冲突的文字。

char *a="AbcdfrDFD";

相反试试这个..

char a[]="AbcdfrDFD";