2013-03-21 4 views
-1

Итак, мы пытаемся создать расчет для сравнения рейтингов фильмов, предоставленных нам пользователями. Мы разделили это на разные команды для нашего класса. Мне было поручено создать расчет, который читается из файла, выводимого из другой команды, а затем создает результат с использованием расчета, которое я придумал. Чтение из файла в порядке, однако я не смог выяснить, как использовать эту информацию для расчета.Как использовать информацию из файла в c

Это моя проблемная область:

long int similarity; 
#define MAXLINESIZE 80 
FILE* myTextFile; 
char ch; 
char lineBuf[MAXLINESIZE] = { '\0' }; 
char *person [10] = { '\0' }; 
char *movie [10] = { '\0' }; 
char *rating [10] = { '\0' }; 


myTextFile = fopen("C:\\users\\owner\\desktop\\movieRating.txt", "r"); 

if(myTextFile == NULL){ 
    printf("Failed"); 
} 


fgets (lineBuf, MAXLINESIZE - 1, myTextFile); 

while (!feof (myTextFile) && !ferror (myTextFile)) { 
    sscanf (lineBuf, "%s %s %s", person, movie, rating); 
    printf("\n person = %s \n movie = %s \n rating = %s \n", person,movie,rating); 
    fgets (lineBuf, MAXLINESIZE - 1, myTextFile); 

} 
long int per = atoi(person[10]); 
long int mov = atoi(movie[10]); 
long int rat = atoi(rating[10]); 
{ 
similarity = (per + rat) * (per + rat); 
return (similarity); 
printf("\n Similarity is %i\n", similarity); 
getchar(); 
} 

getchar(); 
getchar(); 
return 0; 

} 

Надеюсь, я объяснил это право

+9

Что вы хотите сказать? –

ответ

3

Если проблемная область здесь:

char *person [10] = { '\0' }; 
char *movie [10] = { '\0' }; 
char *rating [10] = { '\0' }; 

Он должен быть изменен это:

char person [10] = { '\0' }; 
char movie [10] = { '\0' }; 
char rating [10] = { '\0' }; 

Вам нужен массив символов. Не массив указателей.

Если ваша проблемная область здесь:

long int per = atoi(person[10]); 
long int mov = atoi(movie[10]); 
long int rat = atoi(rating[10]); 

Это должно быть изменено на следующее:

long int per = atoi(person); 
long int mov = atoi(movie); 
long int rat = atoi(rating); 

person это (сейчас) массив символов - что это то, что atoi ожидает.

person[10] является (сейчас) единственным символом, незаконно прочитанным из конца вашего массива.

Если ваша проблемная область здесь:

return (similarity); 
printf("\n Similarity is %i\n", similarity); 

Это должно быть изменено на следующее:

printf("\n Similarity is %i\n", similarity); 
return (similarity); 

Никакой дополнительной код в функции не выполняется после return.

+0

Я, хотя главная проблема была 'char * rating [10] = {'\ 0'};'. Использование массива указателей для хранения символов. – 2013-03-21 19:03:30

+0

@Armin У меня есть 99 основных проблем ... –

+0

Действительно приятно вас беспокоить такой вопрос. – 2013-03-21 19:06:38

Смежные вопросы