大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
随便写了一个,因为不知道你的sn[]数据室怎么定义的,所以你自己只写了出来没有排错,你自己调试吧,应该就是这个样子
成都创新互联公司基于分布式IDC数据中心构建的平台为众多户提供川西大数据中心 四川大带宽租用 成都机柜租用 成都服务器租用。
int writeDat()
{
FILE *fp;
if((fp=fopen("c:\\设备清单.txt","a"))==NULL) //打开文件
{
printf("打开文件失败 c:\\设备清单.txt!");
getch();
return(1);
}
//输出到文件
fprintf(fp, "\n%s ",eq[n].ID);
fprintf(fp, "%s ",eq[n].kind);
fprintf(fp, "%s ",eq[n].name);
fprintf(fp, "%s ",eq[n].price);
fprintf(fp, "%d %d %d",eq[n].purchaseDay.year,eq[n].purchaseDay.month,eq[n].purchaseDay.day);
fprintf(fp, "%s ",eq[n].yesno);
fprintf(fp, "%d %d %d",eq[n].overDay.year,eq[n].overDay.month,eq[n].overDay.day);
//输出到屏幕,不需要的话可以屏蔽掉
fprintf("\n%s ",eq[n].ID);
fprintf("%s ",eq[n].kind);
fprintf("%s ",eq[n].name);
fprintf("%s ",eq[n].price);
fprintf("%d %d %d",eq[n].purchaseDay.year,eq[n].purchaseDay.month,eq[n].purchaseDay.day);
fprintf("%s ",eq[n].yesno);
fprintf("%d %d %d",eq[n].overDay.year,eq[n].overDay.month,eq[n].overDay.day);
fclose(fp);//关闭文件
return(0);
}
void Add()//信息录入
{
char c='Y';
int choice;
while(c=='Y')
{
fflush(stdin);//清除输入流的缓存区,确保不影响后面的数据读取
printf("\n请输入设备ID号:");
scanf("%s",eq[n].ID);
printf("\n请输入设备种类:");
scanf("%s",eq[n].kind);
printf("\n请输入设备名称:");
scanf("%s",eq[n].name);
printf("\n请输入设备价格:");
scanf("%s",eq[n].price);
printf("\n请输入设备购入日期:");
scanf("%d %d %d",eq[n].purchaseDay.year,eq[n].purchaseDay.month,eq[n].purchaseDay.day);
printf("\n请输入设备是否报废:");
scanf("%s",eq[n].yesno);
printf("\n请输入报废日期:");
scanf("%d %d %d",eq[n].overDay.year,eq[n].overDay.month,eq[n].overDay.day);
if(writeDat())printf("\n提示:第%d条记录的录入失败!\n",n+1);;
else
{
n++;
printf("\n提示:已经完成%d记录的录入!\n",n);;
}
printf("\n输入Y继续!\n");
c=getchar();
}
printf("\n提示:输入0则返回主菜单!\n");
scanf("%d",choice);
if(choice==0)
menu();
}
#includestdio.h
main()
{
FILE *fp;
char ch;
fp=fopen("1.dat","w");
while(ch!='a')
{
ch=getchar();
fputc(ch,fp);
}
fclose (fp);
}
给你个例子看看。输入一些字符。会保存在1.dat中。1.dat在你的C程序目录下。你可以去看下C语言文件。。挺简单的,你要实现的 是要用到。fwrite()这个读入数据流。
1.函数指针的数组定义方法:返回值类型( * 指针变量名[Number]) (形参列表)。
例如:
double add(double a,double b){};
double sub(double a,double b){};
double mul(double a,double b){};
double div1(double a,double b){};
double (*oper_func[])(double, double) = {add,sub,mul,div1};//函数指针的数组定义
2.函数指针是指向函数的指针变量。函数指针有两个用途:调用函数和做函数的参数。
函数指针的声明方法为:
返回值类型( * 指针变量名) (形参列表);
“返回值类型”说明函数的返回类型,“( * 指针变量名)”中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。
例子:
#includestdio.h
int max(int x,int y){return (xy? x:y);}
int main(){
int (*ptr)(int, int);
int a, b, c;
ptr = max;
scanf("%d%d", a, b);
c = (*ptr)(a,b);
printf("a=%d, b=%d, max=%d", a, b, c);
return 0;
}
在调用函数的时候,栈按照一定的顺序保存函数名和局部变量,然后函数调用完后栈里的函数名和局部变量被释放,所以结果无法保存,如果是定义为static类型的就可以了,局部变量也是不能保存的