有人可以解释如何将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'这样的任何函数(不确定名称,从不使用它们;)。)。
答案 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')*100
或1*100
或100
,这是1
中第一个102
所代表的内容。
答案 1 :(得分:0)
对输入字符串进行标记。我假设你强迫每个字母必须以3个字符表示。所以打破这种方式的字符串。只需使用显式类型转换即可获得所需的字符。
我认为我不应该为你提供这方面的代码,因为它很简单,看起来更像是一个家庭作业问题。