![](/img/trans.png)
[英]Assign char to array of chars inside an struct thats inside a array of structs thats inside a array of structs thats inside a array of struct
[英]setting an “string” array thats defined in an array of structs equal to something
所以我有一个具有名称和年龄的结构。 看一下main下的displayRecords()内部,我正在尝试按年龄对结构进行排序。 我可以对年龄进行排序,但是在同时对名为name [100]的字符串进行排序以适应正确的年龄方面遇到了麻烦。 当我尝试将其设置为等于某个值时,例如a[j+1].name= a[j].name
它给了我错误:表达式必须是可修改的变量。 我想我尝试了从使用->
到将括号放在各个位置的所有方法。 *a[j+1].name= *a[j].name
有效,但仅对字符串中的第一个字母进行了排序。
下面是手头的问题,请查看displayRecords()函数内部
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define pause system("pause")
#define cls system("cls")
#define SIZE 10
typedef struct{
char name[100];
int age;
}THING;
main(){
THING thing[SIZE];
defaultValue(thing);
displayRecords(thing);
}//End main
void displayRecords(THING a[]){
int i, j;
int temp;
char* temp2;
for(i=0; i<SIZE; i++)
{
for(j=0; j<SIZE-1; j++)
{
if(a[j].age>a[j+1].age)
{
temp = a[j+1].age;
temp2= a[j+1].name;
a[j+1].age = a[j].age;
a[j+1].name= a[j].name;
a[j].age = temp;
a[j].name= temp2;
}
}
}//end bubble sort
for(i=0;i<SIZE;i++){
printf("\n%s is %i\n",a[i].name,a[i].age);
}//end for
pause;
}//end display records
void defaultValue(THING a[]){
strcpy(a[0].name, "Dennis");
strcpy(a[1].name, "Willie");
strcpy(a[2].name, "Tammy");
strcpy(a[3].name, "Abbie");
strcpy(a[4].name, "Spike");
strcpy(a[5].name, "Willis");
strcpy(a[6].name, "Frankie");
strcpy(a[7].name, "Betty");
strcpy(a[8].name, "Donna");
strcpy(a[9].name, "Abe");
a[0].age=45;
a[1].age=22;
a[2].age=99;
a[3].age=75;
a[4].age=5;
a[5].age=4;
a[6].age=67;
a[7].age=36;
a[8].age=11;
a[9].age=21;
}//end defaultvalue
您不能分配给数组,只能在定义时对其进行初始化。 但是,您可以像使用strcpy
一样复制到它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.