c - 在字符串常量之前在 FILE 预期的 ')' 中工作
问题描述
这段代码摘自我正在学习的 C 课程的最终项目。这是我第一次使用 FILE 和 fopens 有人可以帮我解决这个问题并引导我能够在我的程序中保存用户数据所以帮我解决它
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include <stdbool.h>
//main function
int main(){
system("cls"); //Clears screen
mainmenu();
}
//date structure
struct date{
int month,day,year;};
//main structure
struct {char name[50];
char adress[60];
char nationality[20];
char acctype[23];
double phone;
int acc_no;
double deposit;
double age;
struct date dob; //struct inside a struct for day of birth
struct date newa;//struct in date struct for new account
}add,check;
//new account function
void newacc(){
FILE *records;
records = fopen("records.dat","a+");
system("cls");
printf("Create an account Number:\n");
scanf("%d",&check.acc_no);
if(check.acc_no==add.acc_no) printf("Acount Already in use!");
printf("Name:\n");
scanf("%s",add.name);
printf("Age:\a");
scanf("%lf",&add.age);
printf("Phone number:\n");
scanf("%lf",&add.phone);
printf("Nationality:\n");
scanf("%s",add.nationality);
printf("Today's Date *date account created*(dd/mm/yyyy):\n");
scanf("%d/%d/%d",&add.newa.day,&add.newa.month,&add.newa.year);
printf("Date of birth (dd/mm/yyyy):\n");
scanf("%d/%d/%d",&add.dob.day,&add.dob.month,&add.dob.year);
printf("Account type:\n#Savings \n#Fixed 3 years \n#Fixed 10 years\n");
scanf("%s",add.acctype);}
//Error starts here
fprintf(records,"Account Number: %d\n Name:%s\n Age: %lf\n Phone Number: %lf\n Nationality: %s/n Day account created: %d/%d%/%d\n Date of birth: %d/%d/%d %s\n",add.acc_no,add.name,add.age,add.phone,add.nationality,add.newa.day,add.newa.month,add.newa.year,add.dob.day,add.dob.month,add.dob.year,add.acctype);
fclose(records);
printf("\nAccount created successfully!");
所以我的问题出在 FILE 部分并使用它。
解决方案
你有}
在行
scanf("%s",add.acctype);}
这}
对应于函数定义的{
输入void newacc(){
和终止。
因此,fprintf
它下面的和行的调用是无效的,因为它被放置在函数体之外。
将它们移动到正确的位置(某个函数体内的某个位置)以解决问题。