【问题标题】:Decimal string to character ASCII conversion - C十进制字符串到字符 ASCII 转换 - C
【发布时间】:2012-01-24 20:09:08
【问题描述】:

有人可以解释如何将一串十进制值从 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++;
}

但它有效。现在我想拥有以类似方式工作的功能,但当然可以进行十进制>字符转换。关键是,我不能使用像“atoi”之类的任何函数(不确定名称,从未使用过它们;))。

【问题讨论】:

    标签: c ascii


    【解决方案1】:

    你可以用这个函数代替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 代表。

    【讨论】:

      【解决方案2】:

      标记输入字符串。我假设您强制每个字母必须用 3 个字符表示。因此,以这种方式断开字符串。并且只需使用显式类型转换来获得所需的字符。

      我不认为我应该给你这个代码,因为它很简单而且看起来更像是一个家庭作业问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-26
        • 1970-01-01
        • 2011-10-26
        相关资源
        最近更新 更多