2012-01-22 4 views
0

저는 C 프로그래밍의 초보자입니다. 프로그래밍 과제를 해결하면서 unsigned char의 배열을 integer으로 변환해야한다는 결론을 얻었습니다. 예를 들어문자 배열을 정수로 변환하는 방법은 무엇입니까?

:

unsigned char x[]="567"; 
unsigned char y[]="94"; 

가 지금은 xy 모두에서 정수 값을 추가해야합니다. 즉 :

int sum=661; 

가장 간단한 방법은 무엇입니까?

답변

3

당신은 atoi()을 찾고 있습니다.

+0

할당 된 숫자가 임의로 큰 숫자를이 방식으로 저장하려고하지 않는 한. 그렇다면 초등 학교에서 배웠던 것처럼 소수 추가 및 캐리를 구현해야합니다 ... –

+0

atoi를 사용하여이 오류가 발생했습니다. "unsigned char *를 const char *로 변환 할 수 없습니다. – James

+0

부호없는 거리를 버릴 수 있지만, 문자를 저장할 때'char'를 사용할 때 많은 의미가 있습니다 (바이트가 아닌) –

0

표준 라이브러리를 사용하는 경우 최소한 두 가지 옵션이 있습니다. 첫 번째는 atoi()이고, 나머지는 stdlib.h이고 두 번째는 sscanf()입니다. 기능은 stdio.h입니다.

atoi 함수()

char number_string[] = "47"; 
int number; 

number = atoi(number_string); 

sscanf를()

char number_string[] = "47"; 
int number; 
int return; 

return = sscanf(number_string, "%d", &number); 
/* it would be good idea to check the return value here */ 

sscanf() 당신에게 더 나은 오류 처리를 제공합니다 : 여기

은 예입니다. sscanf()의 반환 값은 얼마나 많은 항목이 성공적으로 읽혔는지 (얼마나 많은 변수가 채워 졌는지)를 결정합니다. 입력이 실패하면 EOF가 리턴됩니다.

atoi()은 유효한 변환을 수행 할 수없는 경우 0을 반환합니다.

관련 문제