对C来说真的很新,这个基本代码有问题

时间:2015-05-22 22:22:57

标签: c

我正在学习C"刚刚开始学习#34;我想知道为什么我不能运行这段代码。我知道这个问题很愚蠢,但如果有人解释的话会有很多帮助。

main()
{
char name;
name = "King";

printf("%c",name);

}

从我所读过的内容来看,这一切似乎都是正确的。

=的操作数具有不兼容的类型charchar *

如果有人可以解释那会对我有所帮助!

我正在使用IDE:Pelles C for Windows。

4 个答案:

答案 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值(稍后你会学到)