结构体数组元素中的字符成员赋值问题
#include<stdio.h>#defineSTstructstdST{intnum;charname[50];charsex;};voidmain(){STs[10...
#include<stdio.h>
#define ST struct std
ST
{
int num;
char name[50];
char sex;
};
void main()
{
ST s[10]={{5,"陈博",'m'}};
printf("%s\n",s[0].name);
s[1]=s[0];
s[1].name[50]="王佳芝";
//scanf("%s",s[1].name);
printf("%s\n",s[1].name);
}
当我对s[1].name重新赋值时测试错误
如果是通过scanf来给它重新赋值就可以成立
请高手告诉我对字符串直接赋值时出了什么问题
该怎么解决
谢谢了 展开
#define ST struct std
ST
{
int num;
char name[50];
char sex;
};
void main()
{
ST s[10]={{5,"陈博",'m'}};
printf("%s\n",s[0].name);
s[1]=s[0];
s[1].name[50]="王佳芝";
//scanf("%s",s[1].name);
printf("%s\n",s[1].name);
}
当我对s[1].name重新赋值时测试错误
如果是通过scanf来给它重新赋值就可以成立
请高手告诉我对字符串直接赋值时出了什么问题
该怎么解决
谢谢了 展开
展开全部
你好!!!
原因很简单:s[1].name[50]="王佳芝";左边使用结构体的对象的成员,右边是字符串,要是那是存储在静态存储区的,这样赋值不符合语法:
应该使用strcpy()函数即可:
修改如下:
#include<stdio.h>
#include<string.h>
#define ST struct std
ST
{
int num;
char name[7];
char sex;
};
void main()
{
ST s[10]={{5,"陈博",'m'}};
printf("%s\n",s[0].name);
s[1]=s[0];
strcpy(s[1].name,"王佳芝");
//s[1].name[50]="王佳芝";
//scanf("%s",s[1].name);
printf("%s\n",s[1].name);
}
结果:
陈博
王佳芝
Press any key to continue
原因很简单:s[1].name[50]="王佳芝";左边使用结构体的对象的成员,右边是字符串,要是那是存储在静态存储区的,这样赋值不符合语法:
应该使用strcpy()函数即可:
修改如下:
#include<stdio.h>
#include<string.h>
#define ST struct std
ST
{
int num;
char name[7];
char sex;
};
void main()
{
ST s[10]={{5,"陈博",'m'}};
printf("%s\n",s[0].name);
s[1]=s[0];
strcpy(s[1].name,"王佳芝");
//s[1].name[50]="王佳芝";
//scanf("%s",s[1].name);
printf("%s\n",s[1].name);
}
结果:
陈博
王佳芝
Press any key to continue
展开全部
你这是数组,不是字符串
数组名是指针,但这个指针是不能被变更的
ST s[10]={{5,"陈博",'m'}};这种写法只有在对char数组进行初始化时有用
如果要赋值的话,如果确认是字符串
用楼上的strncpy
s[1].name[50]="王佳芝"; -->
strncpy( s[1].name, "王佳芝", 50 );
数组名是指针,但这个指针是不能被变更的
ST s[10]={{5,"陈博",'m'}};这种写法只有在对char数组进行初始化时有用
如果要赋值的话,如果确认是字符串
用楼上的strncpy
s[1].name[50]="王佳芝"; -->
strncpy( s[1].name, "王佳芝", 50 );
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s[1].name[50]
改成
s[1].name="王佳芝";
试试吧
改成
s[1].name="王佳芝";
试试吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还是尽量多用strncpy这样的函数吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询