char *
を返す(検出する'\n'
) とNULL
onを返す lineget 関数がありますEOF
。そのmain()
行から特定の単語を認識しようとしています。私はstrtokを使用しました:
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
likeで使用できますqsort(helper, strtoks, sizeof(char*), compare_string);
。
広告。2 うまくいくとしても、その行をクリアして次の行の並べ替えに進む方法がわかりません。どうやってするか?
私もvalgrindをクラッシュさせました(上記のコードを使用)->「valgrind:「不可能」が発生しました:致命的なシグナルによって強制終了されました」
間違いはどこですか?