1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhienchen-Cexp

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
file2.c 3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
zhienchen Отправлено 07.01.2019 11:54 d30d2b1
#include<stdio.h>
#include <stdlib.h>
FILE *openfile(char *openmode){ /*打开文件*/
FILE *fp;
if((fp=fopen("d.dat",openmode))==NULL){
printf("File open error!\n");
exit(0);
}
return (fp);
}
int inputchioce(void){
int choice;
printf("#####################################\n"); /*显示操作提示信息*/
printf("## 请输入: ##\n");
printf("## 1.输入数据,并保存保存到文件。 ##\n");
printf("## 2.打开数据文件,并查找 ##\n");
printf("## 3.退出。 ##\n");
printf("#####################################\n");
scanf("%d",&choice);
return choice;
}
void ADDdate(FILE *fp){ /*输入若干个整数,并保存*/
long num;
int cnt=0;
printf("请输入若干个整数,每个整数之间用空格隔开,按^D结束输入。\n");
while(~scanf("%d",&num)){
fwrite(&num,sizeof(long),1,fp);
cnt++;
}
printf("成功写入%d个整数\n",cnt);
if(fp!=NULL&&fclose(fp)){ /*关闭文件*/
printf("Can not close the file!\n");
exit (0);
}
}
long countL(FILE *fp){ /*计算文件中整数的数目*/
long begin,end,longcount;
fseek(fp,0L,SEEK_SET);
begin=ftell(fp);
fseek(fp,sizeof(long),SEEK_END);
end=ftell(fp);
longcount=(end-begin)/sizeof(long)-1;
return longcount;
}
void search(int *argc,char *argv[],FILE *fp){ /*查询指定整数*/
long num,s;
int a,b; /*玄学调bug之处(1) (?`?′)? ┫:?‘∵:.┻┻:?‘.:∵ */
int cntnum=0,flag=0;
int i;
printf("请输入待查找的整数\n");
if(*argc>1){ /*检查命令行是否带参数(1)*/
s=atoi(argv[2]);
printf("%d\n",s);
*argc=1;
}else{
scanf("%ld",&s);
}
long count=countL(fp);
//printf("count=%ld\n",count);/////////////
rewind(fp);
for ( i = 0; i < count;i++){
fread(&num,sizeof(long),1,fp);
//printf("num=%d,s=%d##%d\n",num,s,(num==s));/////////////////
a=(long)num; /*玄学调bug之处(1)续,强制类型转换*/
b=(long)s;
//printf("a=%d,b=%d\n",a,b);//////////////////
cntnum++;
if(a==b){
printf("%d位于第%d个数\n",s,cntnum);
flag++;
}
}
if(flag==0) printf("NOT FOUND!\n");
}
int main(int argc,char *argv[])
{
FILE *fp;
int choice;
if(argc>1){ /*检查命令行是否带参数(1)*/
choice=atoi(argv[1]);
}else{
choice=inputchioce();
}
while(1){
if (choice==3){ /*输入3,退出*/
printf("*** EXIT ***\n");
break;
}
switch(choice){
case 1: /*若输入1,输入若干个整数,并保存*/
fp=openfile("ab+");
ADDdate(fp);
break;
case 2: /*查询指定整数*/
fp=openfile("rb");
search(&argc,argv,fp);
break;
default:
printf("Input Error\n"); /*提示输入非法*/
break;
}
choice=inputchioce();
}
if(fp!=NULL&&fclose(fp)){ /*关闭文件*/
printf("Can not close the file!\n");
exit (0);
}
return 0;
}
/*
//////////////为添加调试输出的地方,记得删除或注释掉
*/

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zhienchen-Cexp.git
git@api.gitlife.ru:oschina-mirror/zhienchen-Cexp.git
oschina-mirror
zhienchen-Cexp
zhienchen-Cexp
master