当前位置: 代码迷 >> C语言 >> 简单的小程序,复制出现问题
  详细解决方案

简单的小程序,复制出现问题

热度:139   发布时间:2007-04-06 20:14:22.0
简单的小程序,复制出现问题

/*
我的目的是将结构体中的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;
}

搜索更多相关的解决方案: name  include  string  

----------------解决方案--------------------------------------------------------

只要将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和斑竹,十分感谢!


----------------解决方案--------------------------------------------------------