2012-01-24 4 views
0

C에서 ASCII 표에서 문자 표기로 10 진수 문자열을 변환하는 방법을 설명 할 수 있습니까? 예를 들어, 사용자 입력은 097 일 수 있고 함수는 화면에 'a'를 인쇄 할 수 있지만 사용자는 '097100101'을 입력 할 수 있으며 함수는 'ade'등을 인쇄해야합니다. 작동 :10 진수 문자열을 ASCII 문자로 변환 - C

char word[30]; 
scanf("%s", word); 

while(word[i]!=0) 
{ 
    if(word[i]<'d') 
     printf("0%d", (int)word[i]); 
    if(word[i]>='d') 
     printf("%d", (int)word[i]); 
    i++; 
} 

그러나 작동합니다. 이제 비슷한 방식으로 작동하는 함수를 원합니다.하지만 decimal> char 변환을 수행합니다. 요점은, 나는 'atoi'또는 그와 비슷한 것을 사용할 수 없다는 것이다.

+2

왜 'atoi'를 사용할 수 없습니까? – arx

+0

atoi를 사용할 수 없습니까? 숙제? – Stu

답변

0

입력 문자열을 토큰 화하십시오. 나는 당신이 모든 글자를 반드시 3 자로 나타내야 만한다고 가정하고 있습니다. 그런 식으로 줄을 끊으십시오. 그리고 원하는 문자를 얻기 위해 명시 적 형 변환을 사용하기 만하면됩니다.

매우 쉽고 숙제 문제처럼 보이기 때문에이 코드를 제공해야한다고 생각하지 않습니다.

4

당신은 atoi 함수 대신이 기능을 사용할 수 있습니다

char a3toc(const char *ptr) 
{ 
    return (ptr[0]-'0')*100 + (ptr[1]-'0')*10 + (ptr[0]-'0'); 
} 

그래서, a3toc("102")'f'(char) 102 같은 일을 반환합니다.

값에 대체 왜, 당신이 표시되지 않는 경우 : 첫 번째 부분은 102에서 첫 번째 1이 무엇을 나타내는 지 인 ('1'-'0')*100 또는 1*100 또는 100가되도록 ptr[0]'1'입니다.

관련 문제