Код ниже относится к программе, которая проверяет обзоры фильмов и оценивает ли они положительные отзывы или негативные отзывы. Положительные и отрицательные - это связанные списки, в которых хранится около 2000 слов в каждом, которые были загружены ранее. Я пытаюсь прочитать в файле обзора эти две функции и определить, являются ли они положительными или отрицательными. Это правильный способ попробовать и прочитать во всем файле, а затем разделить его по слову, чтобы узнать, положительно или отрицательно. Я перехватываю строку fgets, поэтому я делаю что-то неправильно, но я не уверен, что.Анализ строки, считанной из файла
int check_word(node* positive, node* negative, char* word)
{
while(positive->nextPtr != NULL)
{
if(strcmp(positive->word,word) == 0)
{
return 1;
}
else
{
positive = positive->nextPtr;
}
}
while(negative->nextPtr != NULL)
{
if(strcmp(negative->word,word) == 0)
{
return -1;
}
else
{
negative = negative->nextPtr;
}
}
return 0;
}
void evaluate_review(node* positive,node* negative, char* file)
{
FILE* fp = fopen(file,"r");
char* token = NULL;
char* review = NULL;
int positive_words = 0;
int negative_words = 0;
fgets(review, 300, fp);
token = strtok(review, " ");
while(token != NULL)
{
if(check_word(positive, negative, token) == 1)
{
positive_words++;
}
else if(check_word(positive, negative, token) == -1)
{
negative_words++;
}
token = strtok(NULL, " ");
}
if(positive_words > negative_words)
{
printf("This review was a postive one\n");
}
if(negative_words > positive_words)
{
printf("This review was a negative one\n");
}
fclose(fp);
}
, который сделал трюк, спасибо, вы не можете поверить, что я пропустил это! –
@BrandonTomblinson, чтобы сделать код более удобным для обслуживания, вы можете 'fgets (review, sizeof (review), fp);' тогда изменение размера массива не требует изменения 'fgets()' ... –
Хорошая точка, однако если Я использую массив как размер 300, это не имеет значения, так как я не динамически изменяю фактический размер массива –