안녕하세요. 여기에 내 첫 번째 질문입니다. 게시에 대한 모든 규칙을 따르지 않았다면 사과드립니다. 이것은 K & R exercise 2-3입니다. GCC로 컴파일 할 때 세그먼트 화 오류가 발생하며 디버거에 익숙하지 않아서 무슨 일이 벌어지고 있는지 이해할 수 없습니다. 누군가 코드를 훑어보고 무엇이 잘못되었는지 도와 주시면 감사하겠습니다.K & R 2-3 htoi 세분화 오류
#include <stdio.h>
#define HEX 16
unsigned int htoi(char s[]) {
int i, len, n, rp, v;
v = 0;
if (s[0] == '0')
if (s[1] == 'x' || s[1] == 'X')
s[1] = '0';
for (len = 0; len != '\0'; ++len) {
}
for (i = len; i >= 0; --i) {
if (s[i] >= '0' && s[i] <= '9')
n = s[i] - '0';
else if (s[i] >= 'A' && s[i] <= 'F')
n = s[i] - 'A' + 10;
else if (s[i] >= 'a' && s[i] <= 'f')
n = s[i] - 'a' + 10;
rp = len - i;
v += n * HEX^rp;
}
return v;
}
int main() {
int test = htoi("0x1a9f");
printf("%d\n", test);
return 0;
}
운동 질문이 포함되어 있어야합니다. 연습 문제 2-3. 16 진수 문자열 (옵션 0x 또는 0X 포함)을 등가 정수 값으로 변환하는 함수 htoi (s)를 작성하십시오. 허용되는 자릿수는 0-9, a- f, A- F입니다. – Ethan