文件的输入输出问题。
这段代码是由终端输入,然后存为数据文件。输入10个学生的数据
- C/C++ code
#include<stdio.h>#define SIZE 10struct Student_type{char name[10]; int num; int age; char addr[15];}stud[SIZE];void save(){FILE *fp; int i; if((fp=fopen("stu.dat","wb"))==NULL) {printf("cannot open file\n"); return; } for(i=0;i<SIZE;i++) if(fwrite(&stud[i],sizeof(struct Student_type),1,fp)!=1) printf("file write error\n"); fclose(fp);}int main(){int i; printf("Please enter data of students:\n"); for(i=0;i<SIZE;i++) scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr); save(); return 0;}
然后这段代码是随机读入,隔两位读入然后输出在终端
- C/C++ code
#include<stdio.h>#include<stdlib.h>struct Student_type{ char name[10]; int num; int age; char addr[15];}stud[10];int main(){ int i; FILE *fp; if((fp=fopen("stu.dat","rb"))==NULL) {printf("can not open file\n"); exit(0); } for(i=0;i<10;i+=2) {fseek(fp,i*sizeof(struct Student_type),0); fread(&stud[i],sizeof(struct Student_type),1,fp); printf("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr); } fclose(fp); getch(); return 0;}
代码是正确的。 但是如果我想在第二段代码内的循环里面修改一下, 让它既在终端输出,又能把我随机输入的数据存放再另外一个文件内该怎么改啊?
用fwrite或者fputs行吗? 如果不能在循环内修改的话该怎么修改比较好啊?
谢谢了。 很急啊。。 正在学习, 现在卡在这里了。 本来没这样要求,我自己想的。。想不过去就没法安心啊。。
[解决办法]
你先得打开另一个文件。
然后在循环里,和printf写在一起,用fprintf函数,用法和printf很像,就是加一个参数,是你要写入的文件的指针。
[解决办法]
你像第1个程序那样,建一个新文件,打开,用fwrite向里面写就好了。。
[解决办法]
[解决办法]
会直接加在末尾。
楼主,细节何必问,自己动手试试什么都知道了。