私のプログラムは、引数で指定されたファイルを読み取り、ファイル内の各文字列とその頻度を出力します。
プログラムはこのファイルに対して機能します:http ://www.cse.yorku.ca/course/3221/dataset1.txtが、このファイルに対しては機能し ません:http ://www.cse.yorku.ca/course/3221/dataset2.txt 。
Segmentation fault (core dumped)
2番目のファイルにエラーが発生します。
何が間違っている可能性がありますか?助けてください!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char word[101];
int freq;
} WordArray;
int main(int argc, char *argv[])
{
WordArray *array = malloc(sizeof(WordArray));
FILE *file;
int i = 0;
file = fopen(argv[1], "r");
char *str = (char*) malloc (108);
while(fgets(str, 100, file) != NULL)
{
int pos = 0;
char *word = malloc (100);
while (sscanf(str, "%s%n", word, &pos ) == 1)
{
int j;
for (j = 0; j < i; j++)
{
if (strcmp(array[j].word, word) == 0)
{
array[j].freq = array[j].freq + 1;
break;
}
}
if (j==i)
{
array = (WordArray *) realloc (array, sizeof(WordArray) * (i+1));
strcpy(array[i].word, word);
array[i].freq = 1;
i++;
}
str += pos;
}
}
fclose(file);
int k;
for (k=0; k<i; k++)
{
printf("%s %d\n", array[k].word, array[k].freq);
}
return 0;
}