我编写了一个代码来删除字符串中的特殊字符。但是,获得标题中所写的异常。使用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);
}
答案 0 :(得分:1)
首先,您需要在malloc中为最终的'\ 0'添加1,但这不是您的问题。
你是如何测试的?您无法修改字符串文字,因此不允许remover("Test")
,您应该返回新字符串(temp)并让调用者决定何时释放它或者是否要释放原始字符串。