Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 类型定义问题_C_Types_Char_Typedef_Character - Fatal编程技术网

C 类型定义问题

C 类型定义问题,c,types,char,typedef,character,C,Types,Char,Typedef,Character,大家好,请告诉我以下声明是否正确 如果是,请解释 typedef char HELLO[5]; HELLO name; 现在名称是什么数据类型?[如字符、整数等] 我知道名称将是一个字符串数组,但是当我运行下面的程序时,我得到了一个错误 #include<stdio.h> typedef char HELLO[5]; void main() { HELLO name; name="hey"; printf("%s",name); } #包括 type

大家好,请告诉我以下声明是否正确

如果是,请解释

typedef char HELLO[5];

HELLO name;
现在名称是什么数据类型?[如字符、整数等]

我知道名称将是一个字符串数组,但是当我运行下面的程序时,我得到了一个错误

#include<stdio.h>

typedef char HELLO[5];

void main()
{
    HELLO name;
    name="hey";
    printf("%s",name);
}
#包括
typedef char HELLO[5];
void main()
{
你好名字;
name=“嘿”;
printf(“%s”,名称);
}

错误:当从类型“char*”分配给类型“HELLO”时,不兼容的类型是
char[5]
-一个由5个字符组成的数组

以这种方式定义
name

typedef char HELLO[5];

HELLO name;
等同于以下定义:

char name[5];
在C语言中,不能将字符串文字分配给字符数组,如示例中所示。 必须将字符从文字复制到数组中。您可以使用
strncpy()

strncpy(name, "hey", 4); // strlen("hey") == 3. 4 passed to strncpy, as the last
                         // argument causes it to add a null character at the end

您的问题与typedef无关。您的类型是一个字符数组,也称为c样式字符串或以null结尾的字符串

您需要使用
strcpy
或更好的
strncpy
将字符串复制到字符数组中。 否则,您可以使用类型
char*
,您可以获得存储的字符串文本的地址,然后可以打印它

我知道名称将是一个字符串数组,但当我运行以下程序时


正确的术语应该是字符数组或缓冲区。字符串数组可能会被混淆为数组字符数组

如果您不想使用strncpy,它不会做您认为它会做的事情。