请问在C语言中怎样对结构体中的字符串进行赋值?
用strcpy函数和初始化赋值我已经知道了,我想知道还有没有其他的方法可以赋值的。例如有a,b两个指向结构体类型的指针,其中结构体中有一个含5个字符的数组charnum[...
用strcpy函数和初始化赋值我已经知道了,我想知道还有没有其他的方法可以赋值的。
例如有a,b两个指向结构体类型的指针,其中结构体中有一个含5个字符的数组char num[5]。要将b指向的结构体中的字符串赋给a指向的结构体;
我尝试的一种新方法是:
a->num[0]=b->num[0];
a->num[1]=b->num[1];
a->num[2]=b->num[2];
a->num[3]=b->num[3];
a->num[4]=b->num[4];
a->num[5]='\0';
请问还有没有更高级一点的方法? 展开
例如有a,b两个指向结构体类型的指针,其中结构体中有一个含5个字符的数组char num[5]。要将b指向的结构体中的字符串赋给a指向的结构体;
我尝试的一种新方法是:
a->num[0]=b->num[0];
a->num[1]=b->num[1];
a->num[2]=b->num[2];
a->num[3]=b->num[3];
a->num[4]=b->num[4];
a->num[5]='\0';
请问还有没有更高级一点的方法? 展开
6个回答
展开全部
这个要看 a 和 b 指向的结构体是否是同一类型的结构体。如果是同一个类型的结构体,那么直接 a=b 或者 memcpy((void*)a, (void*)b,sizeof(A )); 执行内存拷贝 。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用qsort啊,我举个例子吧。。
字符串数组的
#include<algorithm>
#include<string.h>
#include<stdio.h>
int
cmp(const
void
*_a,const
void
*_b)
{
char
*a=(char
*)_a;
char
*b=(char
*)_b;
return
strcmp(a,b);
}
int
main()
{
char
a[10][80];
int
i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",a[i]);
qsort(a,n,sizeof(char)*80,cmp);
for(i=0;i<n;i++)
printf("%s\n",a[i]);
return
0;
}
排序规则是按照string排序,字符串长度不同的,较长的字符串比较大
否则从首字母开始依次比较,当遇到字符不相等时,较大字符所在的字符串较大
字符串数组的
#include<algorithm>
#include<string.h>
#include<stdio.h>
int
cmp(const
void
*_a,const
void
*_b)
{
char
*a=(char
*)_a;
char
*b=(char
*)_b;
return
strcmp(a,b);
}
int
main()
{
char
a[10][80];
int
i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",a[i]);
qsort(a,n,sizeof(char)*80,cmp);
for(i=0;i<n;i++)
printf("%s\n",a[i]);
return
0;
}
排序规则是按照string排序,字符串长度不同的,较长的字符串比较大
否则从首字母开始依次比较,当遇到字符不相等时,较大字符所在的字符串较大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-03-04
展开全部
直接用结构体变量赋值。
例子:变量=变量。
例子:变量=变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-03-29
展开全部
在结构体中不可以像
struch student {
char name[20];
}a;
a.name="idle";
这个样子赋值。
struch student {
char name[20];
}a;
a.name="idle";
这个样子赋值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询