Good day, i am new to this forum but i need some help, i ran this program in visual c++ and got this error: "Run-Time Check Failure #3 - The variable 'new file' is being used without being initialized," i ran this same program in borland 5.02 and it ran perfectly but in visual c++ it runs but it doesn't rite to the file, could someone please help me out? thanks in advance, here is the code:
Code:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define TRUE 0
#define FALSE 1
typedef struct
{
int attempts;
int higher ;
int lower;
}score;
void play(int,int,int[],score,FILE *, score,FILE *);
int main()
{
FILE *newfile, *read;
score newscore;
score oldscore;
int allscores[3]={0};
int number, guess;
int correct;
correct =1;
srand(time(NULL));
number = rand()%10+1;//%32767 + 1;
printf("Welcome to the guessing game\n\n");
if(read = fopen("gameinfo.txt","r")) //read the previous scores from file
{
fscanf(read,"%d %d %d", &oldscore.attempts, &oldscore.higher, &oldscore.lower);
printf("\n\nPrevious high score.\n\n");
printf("Attempts\t\t%d\n\nToo High\t\t%d\n\nToo Low\t\t\t%d",oldscore.attempts,oldscore.higher,oldscore.lower);
}
play(guess,number, allscores, newscore, read,oldscore,newfile); //checks if number entered by user is higher or lower than the current number and also checks if the
//newscore is higher than the old score
getch();
return 0;
}
void play(int guess,int number,int allscores[],score newscore,FILE * read, score oldscores,FILE * newfile) //function call
{
do
{
printf("Please enter your number\n"); //outputs previous score by the user
scanf("%d",&guess);
system ("cls");
printf("\n\n");
allscores[0]++;
if(guess < number)
{
printf("this is too low. Please retry\n\n"); //increments each time the number is lower than the computer's number
allscores[1]++;
}
if(guess>number)
{
printf("this is too high. Please retry\n\n"); //increments each time the number is higher than the computer's number
allscores[2]++;
}
}while(guess!=number);
if(guess==number)
{
newscore.attempts = allscores[0];
newscore.lower = allscores[1]; //assigns all the current scores to the newscore variables
newscore.higher = allscores[2];
printf("congrats you got it right\n\n");
printf("Thank you for playing here is your score.\n\n");
printf("Attempts\t\t%d\n\nToo High\t\t%d\n\nToo Low\t\t\t%d",newscore.attempts,newscore.higher,newscore.lower); //outputs the newscores
}
if(allscores[0]<=oldscores.attempts)
{
fclose(read);
newfile=fopen("gameinfo.txt","w"); //writes the newscores to file
fprintf(newfile,"%d ",newscore.attempts);
fprintf(newfile,"%d ",newscore.higher);
fprintf(newfile,"%d \n",newscore.lower);
}
}