结构体指针的问题!
来源:百度文库 编辑:神马文学网 时间:2024/10/03 02:44:28
主 题: 结构体指针的问题!
作 者: darkdragon1981 (darkdragon1981)
等 级:
信 誉 值: 100
所属社区: C/C++ C语言
问题点数: 40
回复次数: 12
发表时间: 2005-10-16 22:18:16
我想把从文件里面读出来的n个结构体信息,存到一个结构体的数组里面,方便操作!我用的是c语言!我的那段程序为:
typedef struct book
{
char booknum[10];
char bookname[50];
char bookpublish[50];
float bookprice;
}book;
book * pmybook;
pmybook = malloc(sizeof(book)*100);
pmybook->booknum = "aaaa";
pmybook->bookname = "asdf";
pmybook->bookpublish = "asdfasdf";
pmybook->bookprice = 1.32;
报错在负值阶段,总是说:错误 keshel~1.c 237: 需要逻辑0或非0在 main 函数中,不知道什么意思?我在csdn搜了结构体指针的文章,但是看不太懂,哪位大哥能给我指点一下,不胜感激!过两天就该交课设,急!谢谢!
回复人: kindred(血族) ( ) 信誉:100 2005-10-16 22:29:00 得分: 0
pmybook[i].booknum = "aaaa";
可以吗?
Top
回复人: VZMJ(阿吉) ( ) 信誉:99 2005-10-16 22:41:00 得分: 0
是不是應該用字fu串拷备含数
Top
回复人: fiftymetre(我肉身填补你的欲望.你用什么填补我的灵魂) ( ) 信誉:100 2005-10-16 22:43:00 得分: 0
book * pmybook;
pmybook = malloc(sizeof(book)*100);
pmybook->booknum = "aaaa";
pmybook->bookname = "asdf";
pmybook->bookpublish = "asdfasdf";
pmybook->bookprice = 1.32;
这几行语句不能写在函数外部,应该写在自函数或者main里面
另外,给字符串赋值不能直接=的,要用strcpy
strcpy(pmybook->booknum, "aaaa");
strcpy(pmybook->bookname, "asdf");
strcpy(pmybook->bookpublish, "asdfasdf");
Top
回复人: K() ( ) 信誉:70 2005-10-16 23:46:00 得分: 0
回复人: VZMJ(阿吉) ( ) 信誉:99
是不是應該用字fu串拷备含数
没cuo
Top
回复人: ruiding(瑞丁) ( ) 信誉:100 2005-10-16 23:47:00 得分: 0
我觉得 malloc 的分配是要有类型的,如果前面没有强制类型转换可能不太对。
试试 pmybook =(book *) malloc(sizeof(book)*100);
Top
回复人: lvyao1011() ( ) 信誉:100 2005-10-17 09:54:00 得分: 0
字符数组在初始化的时候可以用“=”;
但是符值的时候是不是应该用strcpy?
Top
回复人: majinyi(毛毛) ( ) 信誉:100 2005-10-17 15:07:00 得分: 0
是
只能用strcpy
Top
回复人: ww51xh(VC菜鸟) ( ) 信誉:99 2005-10-17 15:21:00 得分: 0
呵,对字符数组不能那样赋值,应该用
strcpy或者memcpy
char *strcpy( char *strDestination, const char *strSource );
wchar_t *wcscpy( wchar_t *strDestination, const wchar_t *strSource );
void *memcpy( void *dest, const void *src, size_t count );
Top
回复人: goodluckyxl(被人遗忘的狗) ( ) 信誉:134 2005-10-17 15:22:00 得分: 0
pmybook->booknum = "aaaa";
pmybook->bookname = "asdf";
pmybook->bookpublish = "asdfasdf";
//这个字符串是不能直接赋值的
//booknum bookname...都是 是char* const c中没有重载的概念
//对const对象赋值是不行的 必须用拷贝或者循环赋值
Top
回复人: zgy166(昆深) ( ) 信誉:110 2005-10-17 16:12:00 得分: 0
狗狗说得对极了
Top
回复人: fuyong214(傅勇) ( ) 信誉:100 2005-10-18 00:41:00 得分: 0
错误原因: malloc(sizeof(book)*100)返回的是(void *)类型的指针,
pmybook数据类型为(book *) ,把一个 void 类型的指针
赋给book类型的指针肯定是错误的哈。应该改为
pmybook=(book *)(malloc(sizeof(book)*100))
Top
回复人: lijun51888(sun) ( ) 信誉:100 2005-10-18 09:26:00 得分: 0
要强制类型转换pmybook=(book *)(malloc(sizeof(book)*100))
符值的时候应该用strcpy
pmybook=(book *)(malloc(sizeof(book)*100))也不能分配出100个这种类型空间,应一个一个申请空间
pmybook=(book *)(malloc(sizeof(book))
Top
作 者: darkdragon1981 (darkdragon1981)
等 级:
信 誉 值: 100
所属社区: C/C++ C语言
问题点数: 40
回复次数: 12
发表时间: 2005-10-16 22:18:16
我想把从文件里面读出来的n个结构体信息,存到一个结构体的数组里面,方便操作!我用的是c语言!我的那段程序为:
typedef struct book
{
char booknum[10];
char bookname[50];
char bookpublish[50];
float bookprice;
}book;
book * pmybook;
pmybook = malloc(sizeof(book)*100);
pmybook->booknum = "aaaa";
pmybook->bookname = "asdf";
pmybook->bookpublish = "asdfasdf";
pmybook->bookprice = 1.32;
报错在负值阶段,总是说:错误 keshel~1.c 237: 需要逻辑0或非0在 main 函数中,不知道什么意思?我在csdn搜了结构体指针的文章,但是看不太懂,哪位大哥能给我指点一下,不胜感激!过两天就该交课设,急!谢谢!
回复人: kindred(血族) ( ) 信誉:100 2005-10-16 22:29:00 得分: 0
pmybook[i].booknum = "aaaa";
可以吗?
Top
回复人: VZMJ(阿吉) ( ) 信誉:99 2005-10-16 22:41:00 得分: 0
是不是應該用字fu串拷备含数
Top
回复人: fiftymetre(我肉身填补你的欲望.你用什么填补我的灵魂) ( ) 信誉:100 2005-10-16 22:43:00 得分: 0
book * pmybook;
pmybook = malloc(sizeof(book)*100);
pmybook->booknum = "aaaa";
pmybook->bookname = "asdf";
pmybook->bookpublish = "asdfasdf";
pmybook->bookprice = 1.32;
这几行语句不能写在函数外部,应该写在自函数或者main里面
另外,给字符串赋值不能直接=的,要用strcpy
strcpy(pmybook->booknum, "aaaa");
strcpy(pmybook->bookname, "asdf");
strcpy(pmybook->bookpublish, "asdfasdf");
Top
回复人: K() ( ) 信誉:70 2005-10-16 23:46:00 得分: 0
回复人: VZMJ(阿吉) ( ) 信誉:99
是不是應該用字fu串拷备含数
没cuo
Top
回复人: ruiding(瑞丁) ( ) 信誉:100 2005-10-16 23:47:00 得分: 0
我觉得 malloc 的分配是要有类型的,如果前面没有强制类型转换可能不太对。
试试 pmybook =(book *) malloc(sizeof(book)*100);
Top
回复人: lvyao1011() ( ) 信誉:100 2005-10-17 09:54:00 得分: 0
字符数组在初始化的时候可以用“=”;
但是符值的时候是不是应该用strcpy?
Top
回复人: majinyi(毛毛) ( ) 信誉:100 2005-10-17 15:07:00 得分: 0
是
只能用strcpy
Top
回复人: ww51xh(VC菜鸟) ( ) 信誉:99 2005-10-17 15:21:00 得分: 0
呵,对字符数组不能那样赋值,应该用
strcpy或者memcpy
char *strcpy( char *strDestination, const char *strSource );
wchar_t *wcscpy( wchar_t *strDestination, const wchar_t *strSource );
void *memcpy( void *dest, const void *src, size_t count );
Top
回复人: goodluckyxl(被人遗忘的狗) ( ) 信誉:134 2005-10-17 15:22:00 得分: 0
pmybook->booknum = "aaaa";
pmybook->bookname = "asdf";
pmybook->bookpublish = "asdfasdf";
//这个字符串是不能直接赋值的
//booknum bookname...都是 是char* const c中没有重载的概念
//对const对象赋值是不行的 必须用拷贝或者循环赋值
Top
回复人: zgy166(昆深) ( ) 信誉:110 2005-10-17 16:12:00 得分: 0
狗狗说得对极了
Top
回复人: fuyong214(傅勇) ( ) 信誉:100 2005-10-18 00:41:00 得分: 0
错误原因: malloc(sizeof(book)*100)返回的是(void *)类型的指针,
pmybook数据类型为(book *) ,把一个 void 类型的指针
赋给book类型的指针肯定是错误的哈。应该改为
pmybook=(book *)(malloc(sizeof(book)*100))
Top
回复人: lijun51888(sun) ( ) 信誉:100 2005-10-18 09:26:00 得分: 0
要强制类型转换pmybook=(book *)(malloc(sizeof(book)*100))
符值的时候应该用strcpy
pmybook=(book *)(malloc(sizeof(book)*100))也不能分配出100个这种类型空间,应一个一个申请空间
pmybook=(book *)(malloc(sizeof(book))
Top
结构体指针的问题!
结构体指针的问题!
结构体与函数指针的特
结构体中的函数指针
关于指针的问题?
结构体与函数指针的特殊应用
指向指针的指针的一个问题
结构体与函数指针的特殊应用-如何在c语言中实现多态
结构体字节对齐问题
结构体字节序问题
结构体字节对齐问题
强化我国施工项目 成本管理的核心问题 - 结构论文 - 网易结构-结构,钢结构,混凝土结构,砌体结构的综合服务门户!
强化我国施工项目成本管理的 核心问题 - 结构论文 - 网易结构-结构,钢结构,混凝土结构,砌体结构的综合服务门户!
彻底搞定C指针---指向指针的指针(转)
一系列手机结构问题的解决方案
当前中国经济主要的结构问题
中国社会转型的结构理论问题
谈谈应用文的结构项问题
Delphi的指针
Delphi的指针
C51指针的使用
答读者关心的全国首届经络电指针按摩疗法学习交流班的有关问题
答读者关心的全国首届经络电指针按摩疗法学习交流班的有关问题
多维数组的指针变量