读书人

文件的输入输出有关问题

发布时间: 2012-04-12 15:46:35 作者: rapoo

文件的输入输出问题。
这段代码是由终端输入,然后存为数据文件。输入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向里面写就好了。。
[解决办法]
探讨

引用:

你像第1个程序那样,建一个新文件,打开,用fwrite向里面写就好了。。

不能在第二个程序里加点功能让它读出来的时候写再另外个文件里吗?

[解决办法]
会直接加在末尾。

楼主,细节何必问,自己动手试试什么都知道了。

读书人网 >C语言

热点推荐