这可能是一个非常简单的问题但是我不明白C中的字符是如何工作的,因为我已经习惯了Java,但是我有这个代码:
char c = 'C';
printf(char2int(c));
指向另一个文件中的函数:
int char2int(char digit){}
但是我在编译时遇到了这个错误:
传递'char2int'的参数1使得指针来自整数而没有 cast [默认启用]
答案 0 :(得分:1)
你不能在C中打印这样的整数。另外,我假设你试图获得char的ASCII码,你可以通过强制转换得到它。尝试这样的事情:
int char2int(char digit)
{
return (int)digit;
}
void main()
{
printf("%d", char2int('c'));
}
答案 1 :(得分:0)
此外,打印功能还会打印一种格式,它应该读取类似的内容
printf("%d\n",char2int(c));
"%d"
打印int
类型的参数
"\n"
是换行符
最好使用gcc的警告来检测格式错误,使用-Wformat或-Wall作为编译器选项
答案 2 :(得分:0)
C中的字符和整数几乎相同,即每个字符都有一个整数,具体取决于ASCII character set。所以,如果你有int a=67
,你可以在printf
中使用它printf("%c",a)
,虽然a是一个int,你可以反过来。
但是关于你的代码,我应该说我尝试了你的代码,如果你纠正了使用printf
的错误,它可以正常工作:
#include <stdio.h>
int char2int(char c)
{}
int main()
{
char c='C';
printf("%d",char2int(c));//printf must have at least 2 arguments to work correctly
}
如果您尝试使用此代码,您将获得67作为输入,这是&#39; C&#39;的ASCII代码;(但不要忘记ASCII字符集是有限的,每个数字都不是字符:) )