“const char*”类型的值不能用于初始化“char”类型的实体,这句话不明白什么意思

lingfeng892 2012-04-22 07:12:57
我写了一个顺序表的程序,结果有3个警告,都是标题那句话
这个程序包括两部分 SeqList.h 和 main.c ,SeqList.h 部分正确,就在 main.c 的 stu[3] 部分出了问题

#include <stdio.h>
#include <stdlib.h>

typedef struct Student
{
char num[7]; //学号
char name[10]; //姓名
char sex[3]; //性别
short age; //年龄
}Student;

typedef Student DataType;
#include "SeqList.h"

void main()
{
int i;
SeqList* myList = NULL;
//DataType* List = (DataType*)malloc(myList->maxSize * sizeof(DataType));

DataType stu[3] = {{2000001,"张 三","男",20},
{2000002,"李 四","男",21},
{2000003,"王 五","女",22}};

myList = Initiate(100); //初始化一个顺序表

for(i = 0; i < 3; i++) //插入数据
{
Insert(stu[i],i,myList);
}

for(i = 0; i < 3; i++)
{
DataType item;
item = GetData(i,myList);
printf(" %c %c %c %d\n",item.num,item.name,item.sex,item.age);
}
printf("\n\n删除数据后:\n\n");

Delete(3,myList);

for(i = 0; i < 3; i++)
{
DataType item;
item = GetData(i,myList);
printf(" %c %c %c %d\n",item.num,item.name,item.sex,item.age);
}
printf("\n");
}


这个程序如果把 main.c 中的 DataType 定义为 int 并插入整型数就不会有错了。

这个程序是由http://topic.csdn.net/u/20120420/23/d02fde6e-ffd1-468c-9f0a-62a0c6d8eb49.html这个程序改进的,SeqList.h 部分改对了。
...全文
8599 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liquizing 2012-05-05
  • 打赏
  • 举报
回复
你把name定义成指针型的 “char name[10]”改为char *name就OK了
lingfeng892 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

学号用一个int型不就可以了吗

改成 int 型也不行,那几个汉字部分会提示:“const char*”类型的值不能用于初始化“int”类型的实体。
报错信息是:“main.c(21): warning C4047: “初始化”:“int”与“char [6]”的间接级别不同”、“main.c(21): warning C4047: “初始化”:“int”……
[/Quote]
警告信息
lingfeng892 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

学号用一个int型不就可以了吗
[/Quote]
改成 int 型也不行,那几个汉字部分会提示:“const char*”类型的值不能用于初始化“int”类型的实体。
报错信息是:“main.c(21): warning C4047: “初始化”:“int”与“char [6]”的间接级别不同”、“main.c(21): warning C4047: “初始化”:“int”与“char [3]”的间接级别不同”
lingfeng892 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 9 楼 的回复:

(我的编译器是 VS2010) 改了后成功了,但就是定义 sex[3] 时,DataType stu[3] 中的性别的一列下面会有波浪线提示:“const char[4]”类型的值不能用于初始化“char[3]”类型的实体。如果定义为 sex[4] 就不会出现那种情况
引用 8 楼 的回复:

你在输出的时候也不对
C/C++ code
printf(……
[/Quote]
不是应该一个中文字符占2个字符,再加一个结束标记总要3个字符吗,并且就这个程序而言用3个或4个运行的结果都正确,就是三个时会有那个提示
景语 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

(我的编译器是 VS2010) 改了后成功了,但就是定义 sex[3] 时,DataType stu[3] 中的性别的一列下面会有波浪线提示:“const char[4]”类型的值不能用于初始化“char[3]”类型的实体。如果定义为 sex[4] 就不会出现那种情况
引用 8 楼 的回复:

你在输出的时候也不对
C/C++ code
printf(" %c %c %c ……
[/Quote]

那意思是说一个中文字符需要四个char空间来保存,三个不够。
lingfeng892 2012-04-23
  • 打赏
  • 举报
回复
(我的编译器是 VS2010) 改了后成功了,但就是定义 sex[3] 时,DataType stu[3] 中的性别的一列下面会有波浪线提示:“const char[4]”类型的值不能用于初始化“char[3]”类型的实体。如果定义为 sex[4] 就不会出现那种情况
[Quote=引用 8 楼 的回复:]

你在输出的时候也不对
C/C++ code
printf(" %c %c %c %d\n",item.num,item.name,item.sex,item.age);

改成
C/C++ code
printf(" %s %s %s %d\n",item.num,item.name,item.sex,item.age);


楼主要好好看看基本数据类型…………
[/Quote]
景语 2012-04-23
  • 打赏
  • 举报
回复
你在输出的时候也不对
printf(" %c   %c   %c   %d\n",item.num,item.name,item.sex,item.age);

改成
printf(" %s   %s   %s   %d\n",item.num,item.name,item.sex,item.age);


楼主要好好看看基本数据类型……
景语 2012-04-23
  • 打赏
  • 举报
回复
赋值有问题

DataType stu[3] = {{2000001,"张 三","男",20},
{2000002,"李 四","男",21},
{2000003,"王 五","女",22}};


改成

DataType stu[3] = {{"2000001","张 三","男",20},
{"2000002","李 四","男",21},
{"2000003","王 五","女",22}};

彭家老三 2012-04-23
  • 打赏
  • 举报
回复

DataType stu[3] = {{"2000001","张 三","男",20},
{"2000001","李 四","男",21},
{"2000003","王 五","女",22}};
你要初始化也应该这样:
彭家老三 2012-04-23
  • 打赏
  • 举报
回复
2000001是int型整数,被你用来初始化char num[7];当然会有问题.
[Quote=引用 2 楼 的回复:]
C/C++ code
DataType stu[3] = {{2000001,"张 三","男",20},
{2000001,"李 四","男",21},
{2000003,"王 五","女",22}};


就是那几个汉字(改成英文也是一样)部分提示:“const char*”类型的值不能用于初始化“char”类型的实体……
[/Quote]
lingfeng892 2012-04-22
  • 打赏
  • 举报
回复
DataType stu[3] = {{2000001,"张 三","男",20},
{2000002,"李 四","男",21},
{2000003,"王 五","女",22}};


就是那几个汉字(改成英文也是一样)部分提示:“const char*”类型的值不能用于初始化“char”类型的实体

编译时报错信息是:warning C4305: “初始化”: 从“int”到“char”截断
jemofh159 2012-04-22
  • 打赏
  • 举报
回复
学号用一个int型不就可以了吗

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧