我正在学习C
"刚刚开始学习#34;我想知道为什么我不能运行这段代码。我知道这个问题很愚蠢,但如果有人解释的话会有很多帮助。
main()
{
char name;
name = "King";
printf("%c",name);
}
从我所读过的内容来看,这一切似乎都是正确的。
=
的操作数具有不兼容的类型char
和char *
。
如果有人可以解释那会对我有所帮助!
我正在使用IDE:Pelles C for Windows。
答案 0 :(得分:4)
在您的代码中,name
只是char
。
OTOH,"King"
被称为字符串文字。您需要一个char
指针来保存字符串文字的基址。
将您的代码更改为
char *name;
也就是说,要打印字符串,您需要%s
格式说明符。像
printf("%s",name);
建议:main()
的推荐签名为int main(void)
。
答案 1 :(得分:2)
在C中,将变量声明为“char”表示您的变量只能包含一个字符。即'a','b',' - ','='等。
如果您希望保留更多字符,即字符串,则需要根据要复制到变量的字符长度声明char变量。
在您的情况下,如果您希望将“King”分配给姓名,则必须声明姓名:
char name[5] = "King";
请注意,我们将name声明为大小为5,因为字符串的最后一个字符是不可见的空字符'\ 0'。因为C没有内置字符串类型而是字符数组,我们需要空字符来表示我们已经到达“当前字符串的结尾”。另请注意,如果使用“string.h”头函数“strlen”(它为您提供字符串的长度),则返回值不包含空字符。因此,调用strlen(name)
将返回“4”而不是“5”。空字符被忽略。
如果您希望首先声明名称然后将“King”复制到它,则可以包含“string.h”标题并使用strcpy函数。
#include "stdio.h"
#include "string.h"
int main(void){
char name[5];
strcpy(name,"King");
printf("%s", name);
return 0;
}
您不能将字符串文字分配给char数组:C。
中的name = "king";
我希望上面的代码不会让你感到困惑,因为你刚刚开始。通过练习变得更容易!
答案 2 :(得分:0)
“char”只表示:一个字符。
要存储一串字符,您需要在char上使用字符数组或指针,如下所示:
char name[10]; //array of characters, stores up to 10, indexed from 0 to 9.
char *name; //pointer to a character, stores as many as you want, but beware of memory allocation.
答案 3 :(得分:0)
首先,做......
char <name>[<Amount of space to allocate>] = "Whatever stuff here";
e.g。 char NotABrony[30] = ""
其次,你不能使用带有字符的等号。而是使用strcpy
strcpy(name, "Whatever stuff to put in here");
第三,你使用
printf("%s", name);
因为%c会给你ascii值(稍后你会学到)