我有一個可以在EOF
上返回char *
(它檢測'\n'
)和NULL
的函數。 在main()
我試圖從該行識別特定的單詞。 我用的strtok:如何將char *放入數組中,以便我可以在qsort中使用它,然後移至下一行
int main(int argc, char **argv)
{
char *line, *ptr;
FILE *infile;
FILE *outfile;
char **helper = NULL;
int strtoks = 0;
void *temp;
infile=fopen(argv[1],"r");
outfile=fopen(argv[2],"w");
while(((line=readline(infile))!=NULL))
{
ptr = strtok(line, " ");
temp = realloc(helper, (strtoks)*sizeof(char *));
if(temp == NULL) {
printf("Bad alloc error\n");
free(helper);
return 0;
} else {
helper=temp;
}
while (ptr != NULL) {
strtoks++;
fputs(ptr, outfile);
fputc(' ', outfile);
ptr = strtok(NULL, " ");
helper[strtoks-1] = ptr;
}
/*fputs(line, outfile);*/
free(line);
}
fclose(infile);
fclose(outfile);
return 0;
}
現在我不知道如何把每一個切分的話到一個數組(我爲此設立char ** helper
),以便它可以在qsort
使用像qsort(helper, strtoks, sizeof(char*), compare_string);
。
Ad。 2即使它行得通 - 我不知道如何清除該行,然後繼續對下一行進行排序。怎麼做?
我甚至崩潰的valgrind(與上面的代碼提交) - >「的valgrind:在‘不可能’發生的事情: 由致命的信號終止」
哪裏錯了嗎?
像在代碼中那樣,函數'lineget()'和開頭的spiel或'readline()'一樣嗎? –
我相當肯定彼得的意思是'readline'。 –