直接给结构体赋值,类似字符串中的strcpy()函数
需要头文件string.h
下面是随便写的一个简单的例子:
#include <stdio.h>
#include <string.h>
struct stu
{
char name[20];
int score;
};
int main()
{
struct stu a[10]={0};
int i=0,j=0;
for(i=0;i<3;i++)
{
printf("请输入第%d个学生信息\n",i+1);
scanf("%s %d",a[i].name,&a[i].score);
}
for(i=0;i<2;i++)
{
for(j=i+1;j<3;j++)
{
if(strcmp(a[i].name,a[j].name)>0)
{
memcpy(&a[4],&a[i],sizeof(a[0])); //用memcpy函数!!!
memcpy(&a[i],&a[j],sizeof(a[0]));
memcpy(&a[j],&a[4],sizeof(a[0]));
}
}
}
for(i=0;i<3;i++) printf("%s %d\n",a[i].name,a[i].score);
}
也可传指针进去
#include <stdio.h>
#include <string.h>
struct stu
{
char name[20];
int score;
};
int main()
{
struct stu a[10]={0};
struct stu *p=(struct stu*)malloc(sizeof(struct stu));
//指针一定要分配空间!!!
int i=0,j=0;
for(i=0;i<3;i++)
{
printf("请输入第%d个学生信息\n",i+1);
scanf("%s %d",a[i].name,&a[i].score);
}
for(i=0;i<2;i++)
{
for(j=i+1;j<3;j++)
{
if(strcmp(a[i].name,a[j].name)>0)
{
memcpy(p,&a[i],sizeof(a[0])); //用memcpy函数,此处传指针
memcpy(&a[i],&a[j],sizeof(a[0]));
memcpy(&a[j],p,sizeof(a[0]));
}
}
}
for(i=0;i<3;i++) printf("%s %d\n",a[i].name,a[i].score);
}