2013-09-27 3 views
0

와 함께 원래의 int 값을 유지하는 방법 :어떻게 다음과 같은 내용으로 파일을 구문 분석하고 atoi 함수

while(fgets (line, sizeof(line),fp) != NULL) 
{ 
    inst[count] = atoi(line); 
    printf("%d\n",inst[count]); 
    count++; 
} 

printf() 결과 만 제로입니다 :

여기
0x1001 
0x1001 
0x0004 
... 

내 코드의 일부입니다. 내 배열 inst의 구문 분석 된 파일에 쓰여진 것과 정확히 동일한 값을 유지하려고하지만 atoi()은 제대로 수행하지 않습니다. 나는 또한 성공하지 않고 strtoul()을 시도했다.

C에서 "int"유형으로 전달할 때 파일에서 정수의 동일한 형식을 유지할 수있는 방법이 있습니까?

답변

5

atoi()을 사용하여 16 진수를 구문 분석 할 수 없으며 십진수 만 처리합니다.

사용 sscanf() :

if(sscanf(line, "%x", &inst[count]) == 1) 
    printf("got 0x%x\n", inst[count]); 
1

atoi에만 진수를 구문 분석합니다. atoi은 숫자 0과 그 뒤에 비 숫자 x가옵니다. 비 숫자는 스캔을 중지합니다. 임의의 숫자 (0xaaa, 12, 0777)를 올바르게 구문 분석하려면을 사용하고 base에 0을 전달해야합니다.

2

atoi은 16 진수 정수에서 작동하지 않습니다. 대신 strtoul을 사용하십시오.

c의 정수 유형에는 서식 지정 정보가 없습니다. 형식 정보를 유지하려면 측면에 보관해야합니다.

관련 문제