c在struct char数组的strcmp中编程帮助

时间:2014-02-03 14:41:14

标签: c sorting struct

程序自动退出此时,所以我认为错误在于此代码:

 for(k=0; k<cc; k++){
     smallest = k;
     for(j=k+1; j<cc; j++){
         if (strcasecmp(pb[k].name, pb[j].name)>0){
                smallest = j;
         }
     }
     swapString(pb[k].name, pb[j].name);
  }

以下是我的初始声明:

void swapString(char string1[], char string2[]){
    char temp[31];
    strcpy(temp, string1);
    strcpy(string1, string2);
    strcpy(string2, temp);
}

typedef struct myphonebook{
char name[31];
char address[101];
char cellphone[11];
char email[21];
} Myphonebooktype;

int main (int argc, char * argv[]){
Myphonebooktype*pb = NULL;

FILE*fp;

char username[16];
char password[16];
char option;
int i, k, j, cc, smallest;

strcmp错了吗?或者我无法比较结构中的字符串? 我的目标是按字母顺序排序我的结构。 更新:抱歉,我的错误,应该是k

1 个答案:

答案 0 :(得分:2)

在外部for循环中看起来像一个简单的拼写错误:

for(k=0; i<cc; k++){

我认为应该是k<cc吗?此错误可能导致“无限循环”,但只要k到达cc,您就会在数组末尾建立索引,这是未定义的行为(解释程序崩溃)。