/*
我的目的是将结构体中的name数据用strcpy函数复制到 *name[]中,但是出现了问题,结果总是错误的
这是什么问题,如何解决?
*/
#include<stdio.h>
#include<string.h>
typedef struct
{
char name[5];
int age;
} D;
int main(void)
{
char *name[3];
D data[3];
int i;
strcpy(data[0].name,"Tom");
strcpy(data[1].name,"Mike");
strcpy(data[2].name,"Mary");
for(i=0;i<3;i++) strcpy(name[i],data[i].name);
for(i=0;i<3;i++) printf("%s\n",name[i]);
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
只要将strcpy(name[i],data[i].name) 改成 name[i]=data[i].name 就可以得到你想要的答案
因为主函数一开始定义了char *name[3];其实name[3]是存放3个字符串的首地址.在结构体中定义了char name[5],而data[i].name存放的值就是i个人名字字符串的首地址,所以他们要"赋值".
错漏之处,望高手指点。
[此贴子已经被作者于2007-4-6 20:43:03编辑过]
----------------解决方案--------------------------------------------------------
我真搞不懂,
在TC中,全屏显示时输出的结果是:
Tom
Mike
▬‼εΣsÜ▬‼εΣr¶₧r◄fü<USBSÇ|♀
但小屏幕显示时结果:
Tom
Mike
Mary
----------------解决方案--------------------------------------------------------
你运行的是改过name[i]=data[i].name 的吗?
......
我一般都是用Turbo C/C++ for Windows,有时候用Turbo C 2.01
----------------解决方案--------------------------------------------------------
不要这样改,也能行,
我就是不明白:
在TC中,全屏显示时输出的结果是:
Tom
Mike
▬‼εΣsÜ▬‼εΣr¶₧r◄fü<USBSÇ|♀
但小屏幕显示时结果:
Tom
Mike
Mary
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<string.h>
typedef struct
{
char name[5];
int age;
} D;
int main(void)
{
char *name[3];
D data[3];
int i;
strcpy(data[0].name,"Tom");
strcpy(data[1].name,"Mike");
strcpy(data[2].name,"Mary");
for(i=0;i<3;i++)
{
name[i]=(int *)malloc(sizeof(char)*5);
strcpy(name[i],data[i].name);
}
for(i=0;i<3;i++) printf("%s\n",name[i]);
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
支持版主!
只是我在运行照你方法改后的程序时,警告说"指针转换后指向其他类型在主函数中"
我想是不是你的本意是…… name[i]=(char *)malloc(sizeof(char)*5);
是吗?
[此贴子已经被作者于2007-4-6 22:40:39编辑过]
----------------解决方案--------------------------------------------------------
感谢各位的帮助,尤其是ffppgg和斑竹,十分感谢!
----------------解决方案--------------------------------------------------------