다음 코드는 숫자와 기호를 포함하는 전화 번호를 가져오고 숫자 만 포함하는 문자열을 생성합니다.
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에서 프로그램을 실행하면 "매핑 된 지역 내에 있지 않은 액세스"가 있음을 알 수 있습니다.
왜 작동하지 않는지 이해할 수 없습니다. 오류가 어디에 있는지 말해 줄 수 있습니까?
루프의 17 행에서 ( ) tel
와 비교하려고합니다 . 당신은 의미 합니다.'\0'
tel != '\0'
for
*tel != '\0'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다