2014-03-01 21 views
0

的結構數組中。所以我有一個具有名稱和年齡的結構。查看main下的displayRecords(),在那裏我試着按年齡冒泡排序結構數組。我能夠對年齡進行排序,但是我同時排序被稱爲名字[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 

回答

3

您不能分配到陣列中,只有初始化它們的定義。但是,您可以複製到他們,如strcpy

相關問題