我有以下代码,它将获取一个包含数字和符号的电话号码,并生成一个仅包含该号码的字符串。
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 下运行该程序告诉我“访问不在映射区域内”。
我不明白为什么它不起作用。你能告诉我,错误在哪里吗?
您正在尝试比较 tel
与 '\0'
(tel != '\0'
) 在 for
循环。你是说 *tel != '\0'
。
我是一名优秀的程序员,十分优秀!