不在映射区域内访问

时间:2014-12-05 14:00:43

标签: c

我有以下代码,它将包含一个包含数字和符号的电话号码,并生成一个仅包含该号码的字符串。

char* turnIntoNumber(const char* tel)
{
    unsigned int length_tel = strlen(tel);

    char* number_start = 0x0;
    number_start = (char*) malloc(length_tel + 1);

    if(number_start == 0)
    {
        fprintf(stderr,"couldn't allocate memory for turnIntoNumber(const char*)");
        exit(1);
    }
    char* number = number_start;

    int index = 0;

    for(;tel != '\0'; ++tel)
    {
        if(isNumber(*tel))
        {
            number[index] = *tel;

            index++;
        }
    }

    number[index] = '\0';

    return number_start;
}

运行程序时,我收到了Sig Segfault。 在valgrind下运行程序告诉我,我有一个“不在映射区域内访问”。

我不明白为什么它不起作用。你能告诉我,错误在哪里吗?

1 个答案:

答案 0 :(得分:4)

您正试图在tel循环的第17行将'\0'tel != '\0'for)进行比较。你的意思是*tel != '\0'