程序自动退出此时,所以我认为错误在于此代码:
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
答案 0 :(得分:2)
在外部for
循环中看起来像一个简单的拼写错误:
for(k=0; i<cc; k++){
我认为应该是k<cc
吗?此错误可能导致“无限循环”,但只要k
到达cc
,您就会在数组末尾建立索引,这是未定义的行为(解释程序崩溃)。