user-0 提问: c语言课设

回复:
user: user-1
content: 建议自己设置断点调试

user: user-2
content: #include<stdio.h> #include<string.h> #include<stdlib.h>  struct  aa{     char name[100];     char phone[100];     char address[100]; } company[100],person[100];  int com_idx, per_idx;  static void input_company(void) {     int i = com_idx;      scanf("%s %s %s", company[i].name,company[i].phone,company[i].address);     com_idx++; }  static void input_person(void) {     int i;      for(i = per_idx;i < 5; i++)         scanf("%s %s %s",person[i].name,person[i].phone,person[i].address);     per_idx += 5; }  static void del_company(void) {     char com_name[32];     int i, j;      printf("请输入公司的名字:\n");     scanf("%s", com_name);      for (i = 0; i < com_idx; i++) {         if (strcmp(com_name, company[i].name))             continue;         for (j = i; j < com_idx-1; j++)             company[j] = company[j+1];         break;     }     if (i < com_idx) {         com_idx--;         return;     }      printf("Not find company name: %s!\n", com_name); }  static void del_person(void) {     char name[32];     int i, j;      printf("请输入个人名字:\n");     scanf("%s", name);      for (i = 0; i < per_idx; i++) {         if (strcmp(name, person[i].name))             continue;         for (j = i; j < per_idx-1; j++)             person[j] = person[j+1];         break;     }     if (i < per_idx) {         per_idx--;         return;     }      printf("Not find name: %s!\n", name); }  static void mod_company(void) {     char com_name[32];     int i;      printf("请输入要修改的公司的名字:\n");     scanf("%s", com_name);      for (i = 0; i < com_idx; i++) {         if (strcmp(com_name, company[i].name))             continue;         break;     }     if (i < com_idx) {         scanf("%s %s", company[i].phone, company[i].address);         return;     }      printf("Not find company name: %s!\n", com_name); }  static void mod_person(void) {     char name[32];     int i;      printf("请输入要修改的个人名字:\n");     scanf("%s", name);      for (i = 0; i < per_idx; i++) {         if (strcmp(name, person[i].name))             continue;         break;     }     if (i < per_idx) {         scanf("%s %s", person[i].phone, person[i].address);         return;     }      printf("Not find name: %s!\n", name); }  static void find_company(void) {     char com_name[32];     int i;      printf("请输入要查询的公司名字:\n");     scanf("%s", com_name);      for (i = 0; i < com_idx; i++) {         if (strcmp(com_name, company[i].name))             continue;         break;     }     if (i < com_idx) {         printf("%s %s %s", company[i].name, company[i].phone, company[i].address);         return;     }      printf("Not find company name: %s!\n", com_name); }  static void find_person(void) {     char name[32];     int i;      printf("请输入要查询个人名字:\n");     scanf("%s", name);      for (i = 0; i < per_idx; i++) {         if (strcmp(name, person[i].name))             continue;         break;     }     if (i < per_idx) {         printf("%s %s %s\n", person[i].name, person[i].phone, person[i].address);         return;     }      printf("Not find name: %s!\n", name); }  int main() {     int opt, choice;     char pwd[] = "12345", input_pwd[8];       while (1) {         printf("管理员or顾客(管理员请按1,顾客按其他)\n");         scanf("%d", &opt);         if (opt == 1) {             printf("请输入密码:\n");             scanf("%s", input_pwd);             if (strcmp(input_pwd, pwd))                 continue;              printf("密码正确");             printf("进入管理员系统\n");             printf("选择 录入(1) 删除(2) 修改(3)\n");             scanf("%d", &opt);             switch (opt) {                 case 1:                     printf("录入公司(1)or个人信息(其他)\n");                     scanf("%d", &choice);                     printf("开始录入:\n");                     if (choice == 1)                         input_company();                     else                         input_person();                     break;                  case 2:                     printf("请输入要删除个人信息(1)还是公司信息(其他)\n");                     scanf("%d", &choice);                     if (choice == 1)                         del_person();                     else                         del_company();                     break;                  case 3:                     printf("修改公司信息(1)or个人信息(其他)\n");                     scanf("%d", &choice);                     if (choice == 1)                         mod_company();                     else                         mod_person();                     break;                  case 4:                     printf("Not support!\n");                     break;             }         } else if (opt == 2) {             printf("欢迎进入顾客系统\n");             printf("选择进入公司or个人(公司按1,个人按其他)\n");             scanf("%d", &choice);             if (choice == 1)                 find_company();             else                 find_person();         } else {             continue;         }     } }   建议楼主对比代码找出自己的问题，楼主的基础还需要强化，写出来的代码问题很多，不一一给指出了，自己对比学习吧

user: user-3
content: 请您试试这个，VS2015 C++调试 #include<stdio.h> #include<string.h> #include<stdlib.h> struct  aa { 	char name[100]; 	char phone[100]; 	char address[100]; } company[100], person[100]; int main() { 	int f, i, h; 	char w, a, o, g, b[100], e[6] = { '1','2','3','4','5','\0' }, c[100], d[100], k[100], l[100], m[100], n[100]; quit: 	printf("管理员or顾客(管理员请按1,顾客按其他)\n"); 	a = getchar(); 	getchar(); 	if (a == '1') 	{ 		printf("请输入密码:\n"); 		gets_s(b); 		if (strcmp(b, e) == 0) 		{ 			printf("密码正确"); 			printf("进入管理员系统\n"); 			printf("选择 录入(1) 删除(2) 修改(3)\n"); 			g = getchar(); 			getchar(); 			switch (g) 			{  			case '1': {printf("录入公司(1)or个人信息(其他)\n"); 				if (getchar() == '1') 				{ 					printf("开始录入:\n"); 					for (i = 0; i<1; i++) 					{ 						scanf("%s %s %s", company[i].name, company[i].phone, company[i].address); 						getchar(); 					} 					printf("录入结束\n"); 					break; 				} 				else 				{ 					for (i = 0; i < 5; i++) 					{ 						scanf("%s %s %s", person[i].name, person[i].phone, person[i].address); 						getchar(); 					} 				} 				break; 			} 			case '2': {printf("请输入要删除个人信息(1)还是公司信息(其他)\n"); 				if (getchar() == '1') 				{ 					getchar(); 					printf("请输入个人名字:\n"); 					gets_s(k); 					for (i = 0; i<2; i++) 					{ 						if (strcmp(k, person[i].name) == 0) 						{ 							strcpy(person[i].name, "000"); 							strcpy(person[i].phone, "000"); 							strcpy(person[i].address, "000"); 						} 						else; 					} 					break; 				} 				else 				{ 					printf("请输入公司的名字:\n"); 					gets_s(l);  					for (i = 0; i<5; i++) 					{ 						if (strcmp(l, company[i].name) == 0) 						{ 							strcpy(company[i].name, "000"); 							strcpy(company[i].phone, "000"); 							strcpy(company[i].address, "000"); 						} 						else; 					} 					break; 				}  			} 			case '3': {printf("修改公司信息(1)or个人信息(其他)\n"); 				if (getchar() == '1') 				{ 					printf("请输入要修改的公司名字:\n"); 					getchar(); 					gets_s(m); 					for (i = 0; i<5; i++) 						if (strcmp(m, company[i].name)==0) 							scanf("%s %s", company[i].phone, company[i].address); 					break; 				} 				else 				{ 					printf("请输入要修改的个人名字:\n"); 					gets_s(n); 					for (i = 0; i<5; i++) 						if (strcmp(n, person[i].name)==0) 							scanf("%s %s", person[i].phone, person[i].address); 				}  				break; 			} 			} 			goto quit; 		} 		else 		{ 			printf("密码错误"); 			goto quit; 		} 	} 	else 	{ 		printf("欢迎进入顾客系统\n"); 		printf("选择进入公司or个人(公司按1,个人按其他)\n"); 		w = getchar(); 		getchar(); 		if (w == '1') 		{ 			printf("欢迎查询公司\n"); 			printf("请输入公司名字:\n"); 			gets_s(c); 			for (i = 0; i<100; i++) 				if (strcmp(c, company[i].name) == 0) 					printf("%s %s\n", company[i].phone, company[i].address); 			goto quit; 		} 		else 		{ 			printf("欢迎查询个人\n"); 			printf("请输入查询人名字\n"); 			gets_s(d); 			for (i = 0; i<100; i++) 				if (strcmp(d, person[i].name) == 0) 					printf("%s %s", person[i].phone, person[i].address); 			goto quit; 		}  	} 	return 0; }

user: user-2
content: #include<stdio.h> #include<string.h> #include<stdlib.h>  struct  aa{     char name[100];     char phone[100];     char address[100]; } company[100],person[100];  int com_idx, per_idx;  static void input_company(void) {     int i = com_idx;      scanf("%s %s %s", company[i].name,company[i].phone,company[i].address);     com_idx++; }  static void input_person(void) {     int i;      for(i = per_idx;i < 5; i++)         scanf("%s %s %s",person[i].name,person[i].phone,person[i].address);     per_idx += 5; }  static void del_company(void) {     char com_name[32];     int i, j;      printf("请输入公司的名字:\n");     scanf("%s", com_name);      for (i = 0; i < com_idx; i++) {         if (strcmp(com_name, company[i].name))             continue;         for (j = i; j < com_idx-1; j++)             company[j] = company[j+1];         break;     }     if (i < com_idx) {         com_idx--;         return;     }      printf("Not find company name: %s!\n", com_name); }  static void del_person(void) {     char name[32];     int i, j;      printf("请输入个人名字:\n");     scanf("%s", name);      for (i = 0; i < per_idx; i++) {         if (strcmp(name, person[i].name))             continue;         for (j = i; j < per_idx-1; j++)             person[j] = person[j+1];         break;     }     if (i < per_idx) {         per_idx--;         return;     }      printf("Not find name: %s!\n", name); }  static void mod_company(void) {     char com_name[32];     int i;      printf("请输入要修改的公司的名字:\n");     scanf("%s", com_name);      for (i = 0; i < com_idx; i++) {         if (strcmp(com_name, company[i].name))             continue;         break;     }     if (i < com_idx) {         scanf("%s %s", company[i].phone, company[i].address);         return;     }      printf("Not find company name: %s!\n", com_name); }  static void mod_person(void) {     char name[32];     int i;      printf("请输入要修改的个人名字:\n");     scanf("%s", name);      for (i = 0; i < per_idx; i++) {         if (strcmp(name, person[i].name))             continue;         break;     }     if (i < per_idx) {         scanf("%s %s", person[i].phone, person[i].address);         return;     }      printf("Not find name: %s!\n", name); }  static void find_company(void) {     char com_name[32];     int i;      printf("请输入要查询的公司名字:\n");     scanf("%s", com_name);      for (i = 0; i < com_idx; i++) {         if (strcmp(com_name, company[i].name))             continue;         break;     }     if (i < com_idx) {         printf("%s %s %s", company[i].name, company[i].phone, company[i].address);         return;     }      printf("Not find company name: %s!\n", com_name); }  static void find_person(void) {     char name[32];     int i;      printf("请输入要查询个人名字:\n");     scanf("%s", name);      for (i = 0; i < per_idx; i++) {         if (strcmp(name, person[i].name))             continue;         break;     }     if (i < per_idx) {         printf("%s %s %s\n", person[i].name, person[i].phone, person[i].address);         return;     }      printf("Not find name: %s!\n", name); }  int main() {     int opt, choice;     char pwd[] = "12345", input_pwd[8];       while (1) {         printf("管理员or顾客(管理员请按1,顾客按其他)\n");         scanf("%d", &opt);         if (opt == 1) {             printf("请输入密码:\n");             scanf("%s", input_pwd);             if (strcmp(input_pwd, pwd))                 continue;              printf("密码正确");             printf("进入管理员系统\n");             printf("选择 录入(1) 删除(2) 修改(3)\n");             scanf("%d", &opt);             switch (opt) {                 case 1:                     printf("录入公司(1)or个人信息(其他)\n");                     scanf("%d", &choice);                     printf("开始录入:\n");                     if (choice == 1)                         input_company();                     else                         input_person();                     break;                  case 2:                     printf("请输入要删除个人信息(1)还是公司信息(其他)\n");                     scanf("%d", &choice);                     if (choice == 1)                         del_person();                     else                         del_company();                     break;                  case 3:                     printf("修改公司信息(1)or个人信息(其他)\n");                     scanf("%d", &choice);                     if (choice == 1)                         mod_company();                     else                         mod_person();                     break;                  case 4:                     printf("Not support!\n");                     break;             }         } else if (opt == 2) {             printf("欢迎进入顾客系统\n");             printf("选择进入公司or个人(公司按1,个人按其他)\n");             scanf("%d", &choice);             if (choice == 1)                 find_company();             else                 find_person();         } else {             continue;         }     } }  /*    int f,i,h; //char w,a,o,g,b[100],e[5]={'1','2','3','4','5'},c[100],d[100],k[100],l[100],m[100],n[100]; char w,a,o,g,b[100],e[6]={'1','2','3','4','5'},c[100],d[100],k[100],l[100],m[100],n[100]; quit: printf("管理员or顾客(管理员请按1,顾客按其他)\n"); a=getchar(); getchar(); if(a=='1') {printf("请输入密码:\n"); gets(b); if (strcmp(b,e)==0) { printf("密码正确"); printf("进入管理员系统\n"); printf("选择 录入(1) 删除(2) 修改(3)\n"); g=getchar(); getchar(); switch(g) {  case '1':{printf("录入公司(1)or个人信息(其他)\n"); if(getchar()=='1') {printf("开始录入:\n"); for(i=0;i<1;i++) {scanf("%s %s %s",company[i].name,company[i].phone,company[i].address); } printf("录入结束\n"); break; } else {for(i=0;i<5;i++) scanf("%s %s %s",person[i].name,person[i].phone,person[i].address); } break; } case '2':{printf("请输入要删除个人信息(1)还是公司信息(其他)\n"); if(getchar()=='1') {printf("请输入个人名字:\n"); gets(k); for(i=0;i<2;i++) {if(strcmp(k,person[i].name)==0) {strcpy(person[i].name,"000"); strcpy(person[i].phone,"000"); strcpy(person[i].address,"000"); } else ;} break;} else {printf("请输入公司的名字:\n"); gets(l);  for(i=0;i<5;i++) {if(strcmp(l,company[i].name)==0) {strcpy(company[i].name,"000"); strcpy(company[i].phone,"000"); strcpy(company[i].address,"000"); } else; } break;}  } case '3':{printf("修改公司信息(1)or个人信息(其他)\n"); if(getchar()=='1') {printf("请输入要修改的公司名字:\n"); gets(m); for(i=0;i<5;i++) if(strcmp(m,company[i].name)) scanf("%s %s \n",company[i].phone,company[i].address); break; } else {printf("请输入要修改的个人名字:\n");     gets(n);     for(i=0;i<5;i++)         if(strcmp(n,person[i].name))             scanf("%s %s \n",person[i].phone,person[i].address); }  break; } } goto quit; } else {     printf("密码错误");     goto quit; } } else {     printf("欢迎进入顾客系统\n");     printf("选择进入公司or个人(公司按1,个人按其他)\n");     w=getchar();     getchar();     if(w=='1')     {printf("欢迎查询公司\n");         printf("请输入公司名字:\n");         gets(c);         for(i=0;i<100;i++)             if(strcmp(c,company[i].name)==0)                 printf("%s %s\n",company[i].phone,company[i].address);     }     else     {printf("欢迎查询个人\n");         printf("请输入查询人名字\n");         gets(d);         for(i=0;i<100;i++)             if(strcmp(d,person[i].name)==0)                 printf("%s %s\n",person[i].phone,person[i].address);     }  } } */ 供参考～  能用int， %d输入，就不建议用getchar();因为getchar()是字符包括换行符。

user: user-4
content: person[i].name,person[i].phone,person[i].address);你定义的是数组，这里应该用指针的方法访问地址，试试person[i]->name,person[i]->phone,person[i]->address);其他同理，直接访问变量用.，地址用->，数组等同于指针，除非你取数组中的某个值，不过这里是赋值肯定是首地址，所以要去-》数组名

user: user-5
content: 愁死个人， 你自己在每个scanf后面你配一个c = getchar（）  然后看看就知道是不是了啊 scanf遇到 空格， tab和回车自动过滤去找下一个， 所以对持续用scanf的没有影响 但是scanf和getchar混合，你就必须考虑scanf遗留在键盘缓冲区里面的回车

user: user-0
content: 引用 3 楼 ฅ( ̳• ◡ • ̳)ฅ~的回复:是查询是嗯w=getchar()获取的是回车吗？为什么呢？ 我把goto quit的位置换了，应该没那个问题了，可是录入数据后还是有问题

user: user-0
content: 引用 2 楼 寻开心的回复:scanf之后再getchar返回的也都是回车， 还需要继续过滤掉，否则goto quit后getchar获得都是回车键 是查询是嗯w=getchar()获取的是回车吗？为什么呢？

user: user-0
content: 是查询是嗯w=getchar()获取的是回车吗？为什么呢？

user: user-5
content: scanf之后再getchar返回的也都是回车， 还需要继续过滤掉，否则goto quit后getchar获得都是回车键

user: user-6
content: 这么长 没仔细看，给个建议，用while代替goto，和你的问题关系不大，只是程序结构上优化一下