【发布时间】:2021-06-20 14:15:47
【问题描述】:
我试着做一个小注册程序,把它分成一个header,一个包含注册函数定义和主代码的源代码。
但是,我收到以下错误消息:
error: expected expression before 'struct'.
我做错了什么?请帮助我是初学者。这是我的主要代码。
#include <stdio.h>
#include <stdlib.h>
#include "registration.h"
int main()
{
int choice;
puts("Press 1 to register");
scanf("%d", &choice);
if(choice==1){
registerUser(struct generalUser user);
}
}
这是我的标题代码。
struct generalUser{
char fName[15];
char lName[20];
int id;
int bDay;
int bMonth;
int bYear;
};
struct generalUser user;
void registerUser(struct generalUser user);
这是我定义函数的代码。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void registerUser(struct generalUser user){
srand(time(NULL));
puts("Insert name");
scanf("%s", user.fName);
puts("Insert last name");
scanf("%s", user.lName);
user.id=1 + rand()%9999;
printf("You ID code is %d", &user.id);
printf("Insert date of birth in the following format: dd/mm/yy");
scanf("%d/%d/%d", &user.bDay, &user.bMonth, &user.bYear);
printf("%s %s, id %d, %d/%d/%d", user.fName, user.lName, user.id, user.bDay, user.bMonth, user.bYear);
}
【问题讨论】:
-
你最后的代码 sn-p 中没有
#include "registration.h"。这是转录错误,还是在您的实际代码中?如果是后者,那就是问题所在。 -
看看你是怎么打电话给
printf、scanf和puts的,然后看看你是怎么打电话给registerUser的。注意到区别了吗? -
@Adrian Mole 我修复了这个问题,但现在它说未定义对“registerUser”的引用。我什至将 registerUser(struct generalUser user) 更改为简单的 registerUser(user) 但新错误仍然存在。
-
您可能只想在程序中调用
srand一次。永远不要做scanf("%s", ...);,至少给%s一个长度选项。将user参数传递给registerUser的目的是什么? -
哦,学习 C 时不要使用全局变量。全局变量有其用途,但它们往往会让初学者跳过学习参数的正确使用。
标签: c struct registration