访问违规写作位置

时间:2014-04-11 07:36:22

标签: c string exception

我编写了一个代码来删除字符串中的特殊字符。但是,获得标题中所写的异常。使用VS2012 ..任何解决方案?

void remover(char *input)
{
int j = 0;
char *temp = (char *) malloc(sizeof(char)*strlen(input));
for(int i = 0 ; input[i] != '\0' ; i++)
{
    if(isalpha(input[i]) || isdigit(input[i]))
    {
        *temp[j] = *input[i];
        j++;
    }
}

*temp[j] = '\0';
for(j = 0 ; temp[j] != '\0' ; j++)
    *input[j] = *temp[j];   // exception here

*input[j] = '\0';
//free(temp);
}

1 个答案:

答案 0 :(得分:1)

首先,您需要在malloc中为最终的'\ 0'添加1,但这不是您的问题。

你是如何测试的?您无法修改字符串文字,因此不允许remover("Test"),您应该返回新字符串(temp)并让调用者决定何时释放它或者是否要释放原始字符串。