struct zhanghu
{
char name[20];
char zhanghu[20];
char mima[20];
};
error C2059;error C2380
语法错误,"zhanghu"前的类型(构造函数有返回类型或是当前类型名称的非法重定义)
你的问题是这样的,你定义了一个结构体叫zhanghu对吧。
然后结构体中的一个成员变量也叫zhanghu,虽然是个数组。
但是编译器就懵逼了。当你提到zhanghu的时候,到底指的是结构体的账户,还是结构体里char数组的zhanghu?因此报错。
后面的一系列报错你可以先把这个问题解决掉,不出意外就会消失,因为可能是struct定义失败,导致后面的代码找不到struct zhanghu而报错。
希望对你有所帮助~望采纳!
看看你完整的代码,前面是不是少分号,或者是重复定义
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct zhanghu
{
char name[20];
char zhanghao[20];
char mima[20];
};
int zhuce(struct zhanghu zh[],int m);
void denglu(struct zhanghu zh[],int m);
void menu(void);
void again(struct zhanghu zh[], char l[]);
int main(void)
{
int m=0;
int k;
struct zhanghu zh[100];
while(1)
{
menu();
scanf("%d",&k);
switch(k)
{
case 1:
zhuce(zh,m);
m++;
printf("%d\n\n",m);
break;
case 2:
denglu(zh,m);
break;
case 3:
printf("谢谢使用!\n");
exit(0);
default:
printf("不存在该服务!");
break;
}
}
return 0;
}
void menu(void)
{
printf("\n ******************菜单******************\n");
printf("\t\t*\t ①注册 *\n");
printf("\t\t*\t ②登录 *\n");
printf("\t\t*\t ③退出系统 *\n");
printf(" *****************************************\n");
printf("\n");
printf("\t\t[请选择服务器]\t\b\b\b");
}
int zhuce(struct zhanghu zh[],int m)
{
char d[20],e[20],l[20];
int i;
printf("用户名:");
scanf("%s",&l);
again(zh,l);
printf("账户:");
scanf("%s",&d);
printf("请输入六位密码:");
scanf("%s",&e);
i=strlen(e);
if(i!=6)
{ printf("密码形式错误,请重新创建\n");
printf("用户名:");
scanf("%s",&l);
printf("账户:");
scanf("%s",&d);
printf("请输入六位密码:");
scanf("%s",&e);
}
printf("\n");
strcpy(zh[m].name,l);
strcpy(zh[m].zhanghao,d);
strcpy(zh[m].mima,e);
printf("创建成功!\n");
printf("密码:%s\n账户:%s\n",zh[m].mima,zh[m].zhanghao);
m++;
return m;
}
void denglu(struct zhanghu zh[], int m)
{
int g,f,i;
char d[20],e[20],n[20];
printf("用户名:");
scanf("%s",&n);
printf("账号:");
scanf("%s",&d);
printf("密码:");
scanf("%s",&e);
printf("\n");
for(i=0;i<99;i++)
{
if(strcmp(zh[i].name,n)==0)
{
g=strcmp(zh[i].zhanghao,d);
f=strcmp(zh[i].mima,e);
if((g==0)&&(f==0))
{
printf("%s,欢迎回来!\n\n",zh[i].name);
}
else
{
printf("账号或密码错误!\n\n");
}
}
}
}
错误 1 error LNK2019: 无法解析的外部符号 "void __cdecl again(struct zhanghu * const,char * const)" (?again@@YAXQAUzhanghu@@QAD@Z),该符号在函数 "int __cdecl zhuce(struct zhanghu * const,int)" (?zhuce@@YAHQAUzhanghu@@H@Z) 中被引用 d:\documents\visual studio 2010\Projects\hsrsx1\hsrsx1\111.obj hsrsx1
出现新的错误这是什么原因呢