我正在尝试使用
当我运行程序时,列表根本没有被排序。我也尝试了在这个网站上发布的方法来解决类似的问题,但它们都给了我分段错误。代码有什么问题吗?
以下是txt文件内容的一部分。它是一个包含40个名称的列表:
qsort
函数对从文件中读取的字符串数组进行按字母顺序排序。以下是我的代码:#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#define MAXCHAR 256
int main(int argc, char **argv){
char tempList[MAXCHAR][MAXCHAR];
char reader[MAXCHAR];
FILE* fp;
int i;
char *n;
int index = 0;
if(argc != 2){
printf("too few arguments\n");
exit(-1);
}
fp=fopen(argv[1], "r");
if(fp == NULL){
printf("failed to open file\n");
exit(-1);
}
while(!feof(fp)){
fgets(reader, MAXCHAR, fp);
n = strchr(reader, '\n');
if(n != NULL){
*n = '\0';
}
strcpy(tempList[index], reader);
index++;
}
index--;
for(i=0; i<index; i++){
printf("%s\n", tempList[i]);
}
qsort(tempList, index, sizeof(char *), strcmp);
for(i=0; i<index; i++){
printf("%s\n", tempList[i]);
}
}
当我运行程序时,列表根本没有被排序。我也尝试了在这个网站上发布的方法来解决类似的问题,但它们都给了我分段错误。代码有什么问题吗?
以下是txt文件内容的一部分。它是一个包含40个名称的列表:
Liam
Alexander
Mia
Noah
Emma
William
Charlotte
Charlotte
Mason
William
Ethan
Ethan
Liam
Alexander
Liam
Sophia
Emily
Mason
Alexander
while(fgets(reader, MAXCHAR, fp) != NULL)
代替feof
。 - Weather VaneMAXCHAR
是非常不好的做法 - 这可能会在使用MAXCHAR
时导致混淆。 - Weather Vane