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,它不会做您认为它会做的事情。