user-0 提问: error C2065: 'p1' : undeclared identifier这到底在哪没有定义

回复:
user: user-1
content: 偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。

user: user-2
content: 楼主好萌啊。。。

user: user-0
content: 引用 2 楼 qq423399099 的回复:给你的代码就是有问题的啊，要么就是你题目理解有问题。 1.kaoshi函数里p1,wz,py这些都没有定义 2.main函数少个大括号 3.main函数里tm,m这些也都没定义  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！ main函数的括号忘记在帖子上写了，其他定义都加上了，但是底下这几个错误不知道怎么弄了 \main.c(55) : error C2223: left of '->next' must point to struct/union \main.c(59) : error C2223: left of '->next' must point to struct/union main.c(65) : error C2223: left of '->que' must point to struct/union \main.c(65) : error C2223: left of '->answer1' must point to struct/union \main.c(65) : error C2223: left of '->answer2' must point to struct/union \main.c(65) : error C2223: left of '->answer3' must point to struct/union \main.c(65) : error C2223: left of '->answer4' must point to struct/union \main.c(67) : error C2223: left of '->ture' must point to struct/union

user: user-0
content: 引用 1 楼 60 的回复:p1 未定义。解决方法，在kaoshi的开始，增加p1的定义。 用char定义可以吗  下面那么多一大堆错误应该怎么改  跪求

user: user-3
content: 给你的代码就是有问题的啊，要么就是你题目理解有问题。 1.kaoshi函数里p1,wz,py这些都没有定义 2.main函数少个大括号 3.main函数里tm,m这些也都没定义  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！

user: user-4
content: p1 未定义。解决方法，在kaoshi的开始，增加p1的定义。

user: user-0
content: #include <stdio.h> #include <stdlib.h> #include <ctype.h> #define LEN sizeof(struct shuzu) struct shuzu { 	char que[100]; 	char answer1[100]; 	char answer2[100]; 	char answer3[100]; 	char answer4[100]; 	char ture; 	struct shuzu *next; }; struct shuzu *t; struct shuzu* p1 = NULL;  void kaoshi(int m) {         char ch,ft[5],p1; 		  		FILE *fp; 		int tq,i,n=0,jl,py; 		struct shuzu *t=NULL; 	if((fp=fopen("c:\\test.txt","r"))==NULL) //打开文件 	{ 		printf("请检查考试文件。\n"); 	    exit(0); 	}   	do 	{ 		tq=1;         ch=fgetc(fp);   //提取文件 		for(i=0;ch!='\0'&&ch!=-1;i++)    //循环判断回车符 		{ 			tq++; 			ch=fgetc(fp); 		} 		n++; 		if(n==m) 		{ 			if(p1=='\0') 			{ 				p1=(struct test *)malloc(LEN); 				t=p1; 				p1->next='\0'; 			} 			else 			{ 				p1->next=p1; 				p1=(struct test *)malloc(LEN); 				p1->next='\0'; 			} 			jl=ftell(fp);                       //记录位置 			fseek(fp,(jl-py-1),0);               //调整到行首 			fscanf(fp,"%s%s%s%s%s%s",&p1->que,&p1->answer1,&p1->answer2,&p1->answer3,&p1->answer4,&ft); 			fseek(fp,jl+1,0);                  //调整到行末 			p1->ture=ft[0]; 			break; 		} 	}while(!feof(fp));  		fclose(fp);  //关闭文件 } 	  	 void main() {        struct shuzu *p1; 	int i;   //  tm=kaoshi(-1);     for(i=0;i<51;i++) 	{     char answer[2]; 	int c=0,e=0,m=0; 	do 	{ 		m=rand(); 	} 	while(!(0<m&&m<=50)); 	kaoshi(m);     p1=t; 	printf("\n第%d题：\n",i+1); 	printf("%s\n%s\n",p1->que,p1->answer1,p1->answer2,p1->answer3,p1->answer4);     printf("请输入正确答案：");     scanf("%c",&answer);     while(1) 	{  	   fflush(stdin);//清空缓冲区        if((answer[0]>='a' && answer[0]<='d')||(answer[0]>='A' && answer[0]<='D')) 	   { 		   printf("OK!"); 		   break; 	   } 	  		printf("输入的选项错误，请重新输入:");      } 	 system("cls");//清屏      if(toupper(answer[0])==p1->ture) 	 { 		 c++; 	 } 	 else 	 { 		 e++; 	 } 	 p1=t; 	 do 	 { 		 t=p1->next; 		 free(p1); 		 p1=t; 	 } 	 while(p1!='\0'); 	 system("cls");//清屏 	 printf("*********************************************\n"); 	 printf("\n已完成测试！\n共做50道题:%d错误,%d正确。\n",e,c); 	 printf("*********************************************\n");  	} 	return 0; }   i\main.c(45) : warning C4047: '=' : 'char ' differs in levels of indirection from 'struct test *' \main.c(46) : warning C4047: '=' : 'struct shuzu *' differs in levels of indirection from 'char ' \main.c(47) : error C2223: left of '->next' must point to struct/union \main.c(51) : error C2223: left of '->next' must point to struct/union \main.c(52) : warning C4047: '=' : 'char ' differs in levels of indirection from 'struct test *' \main.c(53) : error C2223: left of '->next' must point to struct/union \main.c(57) : error C2223: left of '->que' must point to struct/union \main.c(57) : error C2223: left of '->answer1' must point to struct/union i\main.c(57) : error C2223: left of '->answer2' must point to struct/union \main.c(57) : error C2223: left of '->answer3' must point to struct/union \main.c(57) : error C2223: left of '->answer4' must point to struct/union \main.c(59) : error C2223: left of '->ture' must point to struct/union \main.c(123) : warning C4098: 'main' : 'void' function returning a value 执行 cl.exe 时出错.  exam_wangdeli.exe - 1 error(s), 0 warning(s)  这是修改过后的代码，但是还有错误  这个结构体指针真不知道怎么改了！！！！求大神！！！！拯救小白吧！！！！

user: user-5
content: 引用 楼主 m0_37177612 的回复:跪求大神  一个考试系统   \main.c(51) : error C2065: 'p1' : undeclared identifier \main.c(53) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct test *' \main.c(54) : warning C4047: '=' : 'struct shuzu *' differs in levels of indirection from 'int ' \main.c(55) : error C2223: left of '->next' must point to struct/union \main.c(59) : error C2223: left of '->next' must point to struct/union \main.c(60) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct test *' \main.c(61) : error C2223: left of '->next' must point to struct/union \main.c(64) : error C2065: 'wz' : undeclared identifier \main.c(64) : error C2065: 'py' : undeclared identifier \main.c(65) : error C2146: syntax error : missing ';' before identifier 'fscanf' \main.c(65) : error C2223: left of '->que' must point to struct/union \main.c(65) : error C2223: left of '->answer1' must point to struct/union \main.c(65) : error C2223: left of '->answer2' must point to struct/union \main.c(65) : error C2223: left of '->answer3' must point to struct/union \main.c(65) : error C2223: left of '->answer4' must point to struct/union \main.c(67) : error C2223: left of '->ture' must point to struct/union \main.c(74) : error C2059: syntax error : '}' \main.c(105) : error C2143: syntax error : missing ';' before 'type' \main.c(106) : error C2143: syntax error : missing ';' before 'type' \main.c(107) : error C2065: 'tm' : undeclared identifier \main.c(114) : error C2063: 'i' : not a function \main.c(116) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct shuzu *' \main.c(117) : error C2065: 'a' : undeclared identifier \main.c(118) : error C2223: left of '->que' must point to struct/union \main.c(118) : error C2223: left of '->answer1' must point to struct/union \main.c(118) : error C2223: left of '->answer2' must point to struct/union \main.c(118) : error C2223: left of '->answer3' must point to struct/union \main.c(118) : error C2223: left of '->answer4' must point to struct/union \exam_wangdeli\main.c(120) : error C2065: 'answer' : undeclared identifier \main.c(133) : error C2109: subscript requires array or pointer type \main.c(133) : error C2223: left of '->ture' must point to struct/union \main.c(135) : error C2065: 'c' : undeclared identifier \main.c(139) : error C2065: 'e' : undeclared identifier \main.c(141) : error C2065: 'test' : undeclared identifier \main.c(144) : error C2223: left of '->next' must point to struct/union \main.c(145) : warning C4022: 'free' : pointer mismatch for actual parameter 1 \main.c(146) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct shuzu *' \main.c(148) : error C2065: 'null' : undeclared identifier 执行 cl.exe 时出错.  exam_wangdeli.exe - 1 error(s), 0 warning(s)  好多一样的错误，看着头都晕了，求大神讲解  p1没有定义怎么能用呢？ shuzu* p1 = NULL;  这个只能保证编译过，程序运行还是有问题。 因为内部逻辑不完整

user: user-0
content: 引用 8 楼 xian_wwq 的回复:几个明显的错误：  使用了toupper(),增加头文件 <ctype.h>    struct shuzu {     char que[100];     char answer1[100];     char answer2[100];     char answer3[100];     char answer4[100];     char ture;     struct test *next; };  既然是链表， 应该是  struct shuzu* next;   if((answer>='a' && answer<='d')||(answer>='A' && answer<='D'))  改成  if((answer[0]>='a' && answer[0]<='d')||(answer[0]>='A' && answer[0]<='D'))   记录位置的 wz,py，肯定要记录相关数据，没有看到相关处理 万分感谢！！！！！  因为学校里刚开始学C语言，好多地方都不明白，那个这个问题应该怎么处理 main.c(55) : error C2223: left of '->next' must point to struct/union 试了好久不知道咋办。

user: user-5
content: 几个明显的错误：  使用了toupper(),增加头文件 <ctype.h>    struct shuzu {     char que[100];     char answer1[100];     char answer2[100];     char answer3[100];     char answer4[100];     char ture;     struct test *next; };  既然是链表， 应该是  struct shuzu* next;   if((answer>='a' && answer<='d')||(answer>='A' && answer<='D'))  改成  if((answer[0]>='a' && answer[0]<='d')||(answer[0]>='A' && answer[0]<='D'))   记录位置的 wz,py，肯定要记录相关数据，没有看到相关处理

user: user-0
content: 引用 5楼小灸舞 的回复:给你的代码就是有问题的啊，要么就是你题目理解有问题。 1.kaoshi函数里p1,wz,py这些都没有定义  [quote=引用 4 楼 m0_37177612 的回复:] [quote=引用 2 楼 qq423399099 的回复:] 给你的代码就是有问题的啊，要么就是你题目理解有问题。 1.kaoshi函数里p1,wz,py这些都没有定义 2.main函数少个大括号 3.main函数里tm,m这些也都没定义  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！ main函数的括号忘记在帖子上写了，其他定义都加上了，但是底下这几个错误不知道怎么弄了 \main.c(55) : error C2223: left of '->next' must point to struct/union \main.c(59) : error C2223: left of '->next' must point to struct/union main.c(65) : error C2223: left of '->que' must point to struct/union \main.c(65) : error C2223: left of '->answer1' must point to struct/union \main.c(65) : error C2223: left of '->answer2' must point to struct/union \main.c(65) : error C2223: left of '->answer3' must point to struct/union \main.c(65) : error C2223: left of '->answer4' must point to struct/union \main.c(67) : error C2223: left of '->ture' must point to struct/union[/quote] 说明你这个结构体类型没有被识别出来[/quote]那应该怎么改呢。刚学c语言

user: user-6
content: 引用 2 楼 qq423399099 的回复:给你的代码就是有问题的啊，要么就是你题目理解有问题。 1.kaoshi函数里p1,wz,py这些都没有定义 2.main函数少个大括号 3.main函数里tm,m这些也都没定义  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  你是赵老师的学生吗？ 赵老师终于有追随者了。

user: user-3
content: 给你的代码就是有问题的啊，要么就是你题目理解有问题。 1.kaoshi函数里p1,wz,py这些都没有定义  引用 4 楼 m0_37177612 的回复:[quote=引用 2 楼 qq423399099 的回复:] 给你的代码就是有问题的啊，要么就是你题目理解有问题。 1.kaoshi函数里p1,wz,py这些都没有定义 2.main函数少个大括号 3.main函数里tm,m这些也都没定义  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！ main函数的括号忘记在帖子上写了，其他定义都加上了，但是底下这几个错误不知道怎么弄了 \main.c(55) : error C2223: left of '->next' must point to struct/union \main.c(59) : error C2223: left of '->next' must point to struct/union main.c(65) : error C2223: left of '->que' must point to struct/union \main.c(65) : error C2223: left of '->answer1' must point to struct/union \main.c(65) : error C2223: left of '->answer2' must point to struct/union \main.c(65) : error C2223: left of '->answer3' must point to struct/union \main.c(65) : error C2223: left of '->answer4' must point to struct/union \main.c(67) : error C2223: left of '->ture' must point to struct/union[/quote] 说明你这个结构体类型没有被识别出来