-1

背景

我试图确定一些国家变音字母的字符代码。

问题

我的代码有问题吗?

char a = "a"; // "a" ascii code is 97

char buffer[8];

itoa(buffer,(int)a, 10);

print(buffer); // but it prints "252" instead of "97"
4

3 回答 3

3

的字符代码'a'确实是 97,但"a"属于char *. 单引号'编码字符,双引号"编码字符串文字。

尝试

char a = 'a';
于 2014-05-12T08:17:16.457 回答
2
char a = "a";

问题是这"a"是一个 C 字符串,一个指向char. 这意味着您最终分配了地址的某些部分,而不是字符的序数值。

您需要分配一个char这样的:

char a = 'a';

如果您在启用警告的情况下进行编译,那么编译器会告诉您错误。例如,我的 GCC 编译器-Wall说:

main.c:在函数'main'中:
main.c:3:14: 警告:初始化从没有强制转换的指针生成整数 [默认启用]
     字符 a = "a"; // "a" ascii 码是 97
              ^

你也绝不能写:

printf(buffer);

如果buffer包含任何格式字符串,那么这将导致printf尝试读取您未提供的参数。

而是写

printf("%s", buffer);
于 2014-05-12T08:17:26.050 回答
1

您在该行分配一个char*to char

char a = "a"; // "a" ascii code is 97

你没有编译器错误或警告吗?

此外,由于您试图确定字符编码,因此您必须确保源文件编码正确(UTF8、ANSI ...)

于 2014-05-12T08:15:44.993 回答