gpt4 book ai didi

c - 对文件中的字符串进行排序

转载 作者:行者123 更新时间:2023-11-30 14:56:58 24 4
gpt4 key购买 nike

我想对文件中的字符串进行排序;这段代码编译得很好,但是当我执行 words_array[i] = strdup(line); 时,它在第 29 行停止工作。

从调试器我有“程序收到信号 sigsegv 段错误”

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


int comparator ( const void * elem1, const void * elem2 )
{
return strcmp( *(const char**) elem1, *(const char**) elem2);
}

int main()
{
char filename[]="dane.txt";
FILE* fp;
char* line = NULL;
size_t len = 0;
char** words_array = NULL;
int i = 0,j; // number of elements

// read list from file
if( ( fp = fopen(filename, "r") ) == NULL ) {
fprintf(stderr, "Cannot open source file %s!\n", filename);
exit(1);
}
for(; fgets(line, len, fp) != NULL; ++i) {
// put word in array
words_array = realloc(words_array, sizeof(char*) * (i + 1) );
words_array[i] = strdup(line);
}
fclose(fp);
free(line);

// sort it
qsort(words_array, i, sizeof(char*), comparator);

if( ( fp = fopen(filename, "a+") ) == NULL ) {
fprintf(stderr, "Cannot open source file %s!\n", filename);
exit(1);
}

// write to file and free dynamically allocated memory
for(j = 0; j < i; ++j) {
fprintf(fp, "%s", words_array[j]);
free(words_array[j]);
}
free(words_array);
fclose(fp);

return 0;
}

最佳答案

您从未为line分配指向的空间。

关于c - 对文件中的字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44248853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com