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