做得通讯录,有些错误,大家帮忙纠正下!Win-tc编译环境
#include <stdio.h>#include <string.h>
#include <stdlib.h>
#include <conio.h>
struct xx
{
char xingming[15];
char xingbie[5];
char dianhua[13];
char qq[13];
char email[30];
};
int printf1() /*菜单函数*/
{
int i;
clrscr();
printf("\t\t\t\tTong Xun Lu\n");
printf("--------------------------------------------------------------------------------");
printf("1.Liu Lan ");
printf("2.Tian Jia ");
printf("3.Xiu Gai ");
printf("4.Cha Zhao ");
printf("5.Shan Chu ");
printf("6.Tui Chu");
printf("\n--------------------------------------------------------------------------------");
printf("Wo Yao Xuan Ze:");
scanf("%d",&i);
return i;
}
tj() /*添加函数*/
{
int a;
struct xx XX;
FILE *fp;
if((fp=fopen("xinxi.txt","ab"))==NULL)
{
printf("Error....Can't nofind the file!\n");
getch();
return main();
}
[color=Red]printf("Shu Ru Xing Ming:");
gets(XX.xingming);
clrscr();[/color] //不好意思,没办法描述,删除红色代码在试试看。这个问题很奇怪
printf("Shu Ru Xing Ming:");
gets(XX.xingming);
printf("Shu Ru Xing Bie:");
gets(XX.xingbie);
printf("Shu Ru Dian Hua:");
gets(XX.dianhua);
printf("Shu Ru QQ:");
gets(XX.qq);
printf("Shu Ru E-mail:");
gets(XX.email);
fwrite(&XX,sizeof(XX),1,fp);
fclose(fp);
printf("\n1.Fanhui--2.Tianjia--3.Tuichu-->[ ]\b\b");
scanf("%d",&a);
if(a==1)
{
return main();
}
else if(a==2)
{
return tj();
}
else if(a==3)
{
exit(0);
}
else
{
printf("Error!Please cry again!\n");
getch();
return main();
}
}
xs() [color=Red]显示正常,但生成的txt文件里有乱码出现[/color] /*显示函数*/
{
FILE *fp;
int i;
struct xx XX;
if((fp=fopen("xinxi.txt","rb"))==NULL)
{
printf("Error....Can't nofind the file!");
getch();
main();
}
while(fread(&XX,sizeof(XX),1,fp)==1)
{
printf("Xingming: %s\n",XX.xingming);
printf("Xingbie : %s\n",XX.xingbie);
printf("Dianhua : %s\n",XX.dianhua);
printf("QQ : %s\n",XX.qq);
printf("E-mail : %s\n\n",XX.email);
}
fclose(fp);
printf("(1.fanhui||2.tuichu)-->[ ]\b\b");
scanf("%d",&i);
if(i==1)
{
return main();
}
else if(i==2)
{
exit(1);
}
else
printf("Error....Please input 1 or 2!");
getch();
clrscr();
xs();
}
cx() [color=Red]这段函数代码不知道哪里错误了,编译通过,但运行起来不是我想要的功能[/color] /*查询函数*/
{
struct xx XX;
FILE *fp;
int flag;
int total;
char ch;
int b;
int tel;
if((fp=fopen("xinxi.txt","rb"))==NULL)
{
printf("Error....Can't find the file!");
getch();
main();
}
rewind(fp);
clrscr();
printf("( 1.Name || 2.Tel || 3.Fanhui )---->[ ]\b\b");
scanf("%d",&flag);
if(flag==1) /*按姓名查询*/
{
printf("Please input the name you want to search:");
scanf("%s",&ch);
total=0;
while(fread(&XX,sizeof(XX),1,fp)==1)
if(strcmp(ch,XX.xingming)==1)
{
total++;
if(total==1)
printf("\nXing Ming:%s\nXing Bie:%s",XX.xingming,XX.xingbie);
}
else
printf("\nSorry!Can't find the poper!\n\n");
getch();
}
else if(flag==2) /*按电话查询*/
{
printf("Please input tel you want to search:");
scanf("%s",&tel);
total=0;
while(fread(&XX,sizeof(XX),1,fp)==1)
if(strcmp(tel,XX.dianhua)==0)
{
total++;
if(total==1)
printf("\nXing Ming:%s\nXing Bie:%s",XX.xingming,XX.xingbie);
}
else
printf("\nSorry!Can't find the poper!\n\n");
getch();
}
else
{
main();
}
fclose(fp);
printf("1.Jixu||2.Fanhui||3.Tuichu-->[ ]\b\b");
scanf("%d",&b);
if(b==1)
{
cx();
}
else if(b==2)
{
main();
}
else
{
exit(1);
}
}
xg() [color=Red]修改函数也是。。。 [/color]/*修改函数*/
{
struct xx XX;
FILE *fp1,*fp2;
int flag;
char name;
int a;
if((fp1=fopen("xinxi.txt","rb"))==NULL)
{
printf("Error....Can't nofind the file!");
getch();
main();
}
if((fp2=fopen("temp.txt","wb"))==NULL)
{
printf("Error....Can't nofind the file!");
getch();
main();
}
printf("Please input the name you want to modify:");
scanf("%s",&name);
flag=0;
while(fread(&XX,sizeof(XX),1,fp1)==1)
{
if(strcmp(name,XX.xingming)==0)
{
printf("\nXingming:%s\n",XX.xingming);
printf("Xingming :%s\n",XX.xingbie);
printf("Xingming :%s\n",XX.dianhua);
printf("Xingming :%s\n",XX.qq);
printf("Xingming :%s",XX.email);
printf("\n\n\nShu Ru Xin Ji Lu\n");
printf("Xingming:");
gets(XX.xingming);
printf("Xingbie:");
gets(XX.xingbie);
printf("Dianhua:");
gets(XX.dianhua);
printf("QQ:");
gets(XX.qq);
printf("E-mail:");
gets(XX.email);
flag=1;
}
fwrite(&XX,sizeof(XX),1,fp2);
}
fclose(fp1);
fclose(fp2);
if(flag==1)
{
printf("Modify sucess!\n");
remove("xinxi.txt");
rename("temp.txt","xinxi.txt");
}
else
printf("Can't find this recore!\n");
getch();
printf("1.Jixu||2.Fanhui||3.Tuichu-->[ ]\b\b");
scanf("%d",&a);
if(a==1)
{
clrscr();
xg();
}
else if(a==2)
{
main();
}
else if(a==3)
{
exit(0);
}
else
printf("Please input 1,2,3!OK?");
getch();
clrscr();
xg();
}
sc() [color=Red]删除函数的思路是怎么样的[/color]
{
struct xx XX;
FILE fp1,fp2;
char name;
int flag;
if((fp1=fopen("xinxi.txt","rb"))=NULL)
{
printf("Can't open the file!");
getch();
main();
}
if((fp1=fopen("temp.txt","wb"))=NULL)
{
printf("Can't open the file!");
getch();
main();
}
printf("Please input name:");
gets(name);
flag=0;
while(fread(&XX,sizeof(XX),1,fp1)==1)
{
if(strcmp(name,XX.xingming)==0)
{
printf("Xingming:%s\nXingbie:%s\nDianhua:%s");
flag=1;
main()
{
switch(printf1())
{
case 1:clrscr();xs();break;
case 2:clrscr();tj();break;
case 3:clrscr();xg();break;
case 4:clrscr();cx();break;
case 5:clrscr();printf("Deng Dai!");getch();main();break;
case 6:exit(0);break;
default:clrscr();printf("Error.....Please cry again!");getch();main();break;
}
}
怎么有人也求住过,我把修改好的发给你好了
#include <stdio.h>#include <string.h>
#include <stdlib.h>
#include <conio.h>
struct xx
{
char xingming[15];
char xingbie[5];
char dianhua[13];
char qq[13];
char email[30];
};
int printf1() /*菜单函数*/
{
int i;
clrscr();
printf("\t\t\t\tTong Xun Lu\n");
printf("--------------------------------------------------------------------------------");
printf("1.Liu Lan ");
printf("2.Tian Jia ");
printf("3.Xiu Gai ");
printf("4.Cha Zhao ");
printf("5.xin jian ");
printf("6.Tui Chu");
printf("\n--------------------------------------------------------------------------------");
printf("ni Yao Xuan Ze:");
scanf("%d",&i);
return i;
}
create()
{
FILE *fp;
if(!(fp=fopen("xinxi.txt","w")))
{
printf("%s","cannot create ");
return;
}
fprintf(fp,"%13s %5s%15s%15s%28s\n","xingming","xingbie","dianhua","qq","email");
fclose(fp);
}
tj() /*添加函数*/
{
struct xx XX;
FILE *fp;
if((fp=fopen("xinxi.txt","a"))==NULL)
{
printf("Error....Can't nofind the file!\n");
getch();
return;
}
clrscr();
getchar(); /*用来接收'\n'*/
printf("Shu Ru Xing Ming:");
gets(XX.xingming);
printf("Shu Ru Xing Bie:");
gets(XX.xingbie);
printf("Shu Ru Dian Hua:");
gets(XX.dianhua);
printf("Shu Ru QQ:");
gets(XX.qq);
printf("Shu Ru E-mail:");
gets(XX.email);
fprintf(fp,"%15s%5s%15s%15s%30s\n",XX.xingming,XX.xingbie,XX.dianhua,XX.qq,XX.email);
fclose(fp);
}
xs() /*显示函数*/
{
FILE *fp;
struct xx XX;
if((fp=fopen("xinxi.txt","r"))==NULL)
{
printf("Error....Can't nofind the file!");
return;
}
printf("%13s %5s%15s%15s%28s\n","xingming","xingbie","dianhua","qq","email");
while(!feof(fp))
{
fputc(fgetc(fp),stdout);
}
getch();
getchar(); /*用来停顿*/
fclose(fp);
}
cx() /*查询函数*/
{
struct xx XX;
FILE *fp;
int flag; /*判断查询条件*/
char ch[15];
char tel[13];
if((fp=fopen("xinxi.txt","r"))==NULL)
{
printf("Error....Can't find the file!");
return;
}
printf("(1.name||2.tel)-->[ ]\b\b");
do
{
scanf("%d",&flag);
if(flag==1) /*按姓名查询*/
{
printf("Please input the name you want to search:");
scanf("%s",&ch);
while(!feof(fp))
{
fscanf(fp,"%s%s%s%s%s\n",XX.xingming,XX.xingbie,XX.dianhua,XX.qq,XX.email);
if(strcmp(ch,XX.xingming)==0)
{
printf("%13s %5s%15s%15s%28s\n","xingming","xingbie","dianhua","qq","email");
printf("%15s%5s%15s%15s%30s\n",XX.xingming,XX.xingbie,XX.dianhua,XX.qq,XX.email);
getch();
getchar();
break;
}
}
printf("%s","not found");
getch();
getchar();
break;
}
if(flag==2) /*按电话查询*/
{
printf("Please input tel you want to search:");
scanf("%s",&tel);
while(!feof(fp))
{
fscanf(fp,"%s%s%s%s%s\n",XX.xingming,XX.xingbie,XX.dianhua,XX.qq,XX.email);
if(strcmp(tel,XX.xingming)==0)
{
printf("%13s %5s%15s%15s%28s\n","xingming","xingbie","dianhua","qq","email");
printf("%15s%5s%15s%15s%30s\n",XX.xingming,XX.xingbie,XX.dianhua,XX.qq,XX.email);
getch();
getchar();
break;
}
}
break;
}
printf("%s","not found");
getch();
getchar();
break;
}while(flag<1||flag>2);
fclose(fp);
}
xg() /*修改函数*/
{
struct xx XX;
FILE *fp1,*fp2;
char name[15];
if((fp1=fopen("xinxi.txt","r"))==NULL)
{
printf("Error....Can't nofind the file!");
return;
}
if((fp2=fopen("temp.txt","w"))==NULL)
{
printf("Error....Can't nofind the file!");
fclose(fp1);
return;
}
printf("Please input the name you want to modify:");
scanf("%s",&name);
while(!feof())
{
fscanf(fp,"%s%s%s%s%s\n",XX.xingming,XX.xingbie,XX.dianhua,XX.qq,XX.email);
if(strcmp(name,XX.xingming)==0)
{
printf("\nXingming:%s\n",XX.xingming);
printf("Xingming :%s\n",XX.xingbie);
printf("Xingming :%s\n",XX.dianhua);
printf("Xingming :%s\n",XX.qq);
printf("Xingming :%s",XX.email);
printf("\n\n\nShu Ru Xin Ji Lu\n");
printf("Xingming:");
gets(XX.xingming);
printf("Xingbie:");
gets(XX.xingbie);
printf("Dianhua:");
gets(XX.dianhua);
printf("QQ:");
gets(XX.qq);
printf("E-mail:");
gets(XX.email);
}
fprintf(fp2,"%15s%5s%15s%15s%30s\n",XX.xingming,XX.xingbie,XX.dianhua,XX.qq,XX.email);
}
fclose(fp1);
fclose(fp2);
remove("xinxi.txt");
rename("temp.txt","xinxi.txt");
}
main()
{
do
{
clrscr();
switch(printf1())
{
case 1:xs();break;
case 2:tj();break;
case 3:xg();break;
case 4:cx();break;
case 5:create();break;
case 6:exit(0);break;
default:printf("Error.....Please perss any key!");break;
}
} while(1);
}
恩,谢谢你,不过为什么
getchar(); /*用来接收'\n'*/
我就郁闷这一点,因为我没有getchar(),输出的时候,姓名和性别就是显示为一行[tk02]
为什么呢??
请看下面 getch() getchar() scanf() gets()这些函数都涉及了堆栽
先调用getch()函数,你按了一下‘\n’所以把 先‘\n’放进堆栽中了gets()是从堆栽中取值的 堆栽中刚好有一个‘\n’
所以 XX.xingming == “” (空字符串);
跟你自己输‘\n' 是一样的
没有getchar(),输出的时候,姓名和性别就显示为一行
当用getchar()函数时,他先从堆栽中把‘\n’取走了
从而使堆栽中没有东西了 我们学的教科书怎么就没有「堆栽」这一类的词啊? [quote][bo][un]chengli[/un] 在 2008-7-22 19:15 的发言:[/bo]
先调用getch()函数,你按了一下‘\n’所以把 先‘\n’放进堆栽中了
gets()是从堆栽中取值的 堆栽中刚好有一个‘\n’
所以 XX.xingming == “” (空字符串);
跟你自己输‘\n' 是一样的
没有getchar(),输出 ... [/quote]
堆栈………………
兄弟你记错了,那个是缓冲区…… 堆栈是怎么样的一个概念?
学校发的C课程好象对此没有介绍啊
堆栈是怎么样的概念?
学校里学的c是最基础的
你看了数据结构和c高级应用就会明白什么是堆栈,要学好c还有很多路要走
[[it] 本帖最后由 chengli 于 2008-8-1 12:09 编辑 [/it]] 这个意义不大
只能用来练习
最好做的时候用JAVA比较好
页:
[1]
