-1

そこで、ユーザーから提供された映画の評価を比較するための計算を作成しようとしています。クラスプロジェクトでは、これをさまざまなチームに分けました。私は、別のチームからのファイル出力から読み取り、思いついた計算を使用して出力を作成する計算を作成するという任務を負っています。ファイルからの読み取りは問題ありませんが、その情報を計算に使用する方法を理解できませんでした。

これは私の問題領域です:

    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;

}

うまくいけば、私はこの権利を説明しました

4

1 に答える 1

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

于 2013-03-21T18:58:41.340 に答える