十进制字符串到字符ASCII转换 - C.

时间:2012-01-24 20:09:08

标签: c ascii

有人可以解释如何将ASCII表中的十进制值字符串转换为C中的字符“表示”吗?例如:用户输入可能是097,功能会在屏幕上打印'a',但用户也可以输入'097100101',而且该功能必须打印'ade'等。我写了一些笨拙的东西,反之亦然操作:

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++;
}

但它确实有效。现在我希望功能以类似的方式工作,但当然是十进制&gt; char转换。关键是,我不能使用像'atoi'这样的任何函数(不确定名称,从不使用它们;)。)。

2 个答案:

答案 0 :(得分: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 ,这是1中第一个102所代表的内容。

答案 1 :(得分:0)

对输入字符串进行标记。我假设你强迫每个字母必须以3个字符表示。所以打破这种方式的字符串。只需使用显式类型转换即可获得所需的字符。

我认为我不应该为你提供这方面的代码,因为它很简单,看起来更像是一个家庭作业问题。