2012-01-24 51 views
0

有人可以解釋如何將ASCII表中的十進制值字符串轉換爲它在C中的字符'表示'?例如:用戶輸入可以是097,並且該功能將在屏幕上打印'a',但是用戶可以鍵入'097100101'並且該功能將必須打印'ade'等。我已經寫了一些笨重的操作:十進制字符串到字符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")將返回同樣的事情(char) 102,這是一個'f'

如果你不明白爲什麼,替補中的值:ptr[0]'1',所以第一部分變爲('1'-'0')*1001*100100,這是在102首先1代表。

相關問題