Aight.. I keep getting this one error in my program, makes no sense to me whatsoever. I have a sneaking suspiscion it might be Visual Studio.NET throwing a hissy fit. I get an error c2059: syntax error 'type' in line 50, anyone know what that means? After 2 hours of poking around to fix it, it's driving me to tears.
#include <stdio.h>
typedef struct stud
{
int id;
char name[30];
char subject[30];
char grade;
}student;
void prompt(void);
void add(FILE **inp, FILE **outp);
void edit(FILE **inp, FILE **outp);
void read(FILE **inp);
void grades(FILE **inp);
void main()
{
FILE *inp, *outp;
int option;
do
{
prompt();
scanf("%d", &option);
if(option == 1)
{
add(&inp, &outp);
}
else if(option == 2)
{
edit(&inp, &outp);
}
else if(option == 3)
{
read(&inp);
}
else if(option == 4)
{
grades(&inp);
}while(option != 5);
}
void prompt(void)
{
printf("Please select the option you wish to take\n");
printf("1. Add new students to records\n");
printf("2. Edit current student records\n");
printf("3. Read the file\n");
printf("4. Produce a report indicating overall grade for 5 subjects per student\n");
printf("5. Quit this program\n");
}
void add(FILE **inp, FILE **outp)
{
student thestudent;
*inp = fopen("students.txt", "r");
*outp = fopen("temp.txt", "w");
//copy the contents of student.txt to temp.txt
while((fscanf(*inp,"%d\t%s\t%s\t%c",thestudent.id,thestudent.name,thestudent.subject,thestudent.grade) != EOF))
{
fprintf(*outp, "%d\t%s\t%s\t%c\n", thestudent.id,thestudent.name,thestudent.subject,thestudent.grade);
}
printf("Student ID:\n");
scanf("%d", thestudent.id);
printf("Name:\n");
scanf("%s", thestudent.name);
printf("Subject 1:\n");
scanf("%s",thestudent.subject);
printf("Grade:\n");
scanf("%c", thestudent.grade);
//insert at end of output file
fprintf(*outp, "%d\t%s\t%s\t%c\n", thestudent.id,thestudent.name,thestudent.subject,thestudent.grade);
fclose(*inp);
fclose(*outp);
remove("students.txt");
rename("temp.txt", "students.txt");
}
void edit(FILE **inp, FILE **outp)
{
student thestudent;
int editID;
*inp = fopen("students.txt", "r");
*outp = fopen("temp.txt", "w");
printf("Enter student's ID\n");
scanf("%d", &editID);
while(fscanf(*inp,"%d\t%s\t%s\t%c",thestudent.id,thestudent.name,thestudent.subject,thestudent.grade) != EOF)
{
if(thestudent.id == editID)
{
printf("Student ID:\n");
scanf("%d", thestudent.id);
printf("Name:\n");
scanf("%s", thestudent.name);
printf("Subject 1:\n");
scanf("%s",thestudent.subject);
printf("Grade 1:\n");
scanf("%c", thestudent.grade);
}
fprintf(*outp, "%d\t%s\t%s\t%c\n", thestudent.id,thestudent.name,thestudent.subject,thestudent.grade);
}
fclose(*inp);
fclose(*outp);
remove("students.txt");
rename("temp.txt", "students.txt");
}
void read(FILE **inp)
{
student thestudent;
while(fscanf(*inp,"%d\t%s\t%s\t%c",thestudent.id,thestudent.name,thestudent.subject,thestudent.grade) != EOF)
{
printf("%d\t%s\t%s\t%c\n", thestudent.id,thestudent.name,thestudent.subject,thestudent.grade);
}
}
void grades(FILE **inp)
{
student thestudent;
int count = 0;
double percentage = 0, result;
int editID;
*inp = fopen("students.txt", "r");
while(fscanf(*inp,"%d\t%s\t%s\t%c",thestudent.id,thestudent.name,thestudent.subject,thestudent.grade) != EOF)
{
if(thestudent.id == editID)
{
count = count + 1;
if((thestudent.grade = 'A')||(thestudent.grade = 'a'))
{
percentage = percentage + 85;
}
else if((thestudent.grade = 'B')||(thestudent.grade = 'b'))
{
percentage = percentage + 65;
}
else if((thestudent.grade = 'C')||(thestudent.grade = 'c'))
{
percentage = percentage + 55;
}
else if((thestudent.grade = 'D')||(thestudent.grade = 'd'))
{
percentage = percentage + 45;
}
else if((thestudent.grade = 'E')||(thestudent.grade = 'e'))
{
percentage = percentage + 35;
}
else if((thestudent.grade = 'F')||(thestudent.grade = 'f'))
{
percentage = percentage + 25;
}
}
}
result = (percentage/count);
printf("Average percentage for student %d : %.2f\n",editID, percentage);
fclose(*inp);
}
[EDIT] Putting in the code would probably help heh...[/EDIT]