struct char 数组的 strcmp 中的 C 编程帮助

标签 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

最佳答案

看起来你的外部有一个简单的拼写错误 for循环:

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

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

关于struct char 数组的 strcmp 中的 C 编程帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21530186/

相关文章:

c# - 用于对不同属性中的不同对象进行排序的通用 IComparer

JSON 应用映射到对象的映射

c - 如何测量文件 I/O 的挂钟时间

c - 打印负十六进制

c++ - C/C++ 中的常量

java - 使用 "ORDER BY"对 SQLite 表进行排序 - Android

c - 整数连接 c

java - 使用内置排序函数对二维数组进行排序

c - 将 const 变量的成员分配给另一个 const

go - 如何将任何结构作为参数发送给方法并返回结构?