1、使用fread和fwrite完成两个文件的拷贝,要求源文件和目标文件由外界输入
#include <myhead.h>
/*创建结构体*/
struct Stu
{
int id;//学号
char name[20];//姓名
float score;//成绩
};
int main(int argc, const char *argv[])
{
struct Stu s[3];
/*终端循环输入学生信息*/
for(int i=0; i<3; i++)
{
printf("输入第%d个学生的学号 姓名 成绩\n",i+1);
scanf("%d %s %f", &s[i].id, s[i].name, &s[i].score);
}
/*建立文件 以写形式打开文件*/
FILE *fp=fopen("./ff.txt","w");
/*判空*/
if(fp==NULL)
{
perror("fopen error\n");
return -1;
}
/*使用fwrite将数据写入到文件中*/
fwrite(s,sizeof(s),3,fp);
/*关闭文件*/
fclose(fp);
/*建立文件 以写形式打开文件*/
FILE *fp1=fopen("./ff.txt","r");
if(fp1==NULL)
{
perror("fopen error\n");
return -1;
}
struct Stu sw[3];
/*读文件*/
fread(sw,sizeof(struct Stu),3,fp1);
fclose(fp1);
for(int i=0; i<3; i++)
{
printf("第%d个学生信息为:%d %s %f \n", i+1, s[i].id, s[i].name, s[i].score);
}
/*写入*/
FILE *fp2=fopen("./ff1.txt","w");
if(fp2==NULL)
{
perror("fopen error\n");
return -1;
}
fwrite(sw,sizeof(sw),3,fp2);
/*关闭文件*/
fclose(fp2);
return 0;
}

2、使用fgets获取当前文件的总行数
#include <myhead.h>
int main(int argc, const char *argv[])
{
FILE *fp=fopen("./ff2.txt","r");
if(fp==NULL)
{
perror("fopen error\n");
return -1;
}
char buf[10]="";
int num=0;
while(1)
{
char *res=fgets(buf,sizeof(buf),fp);
char *p=buf;
if(res==NULL)
{
break;
}
while(*p!='\0')
{
if(*p == '\n'){
num++;
}
p++;
}
}
printf("this file have %d line\n",num);
return 0;
}

3、 向文件中每一秒打印当前系统时间
#include <myhead.h>
#include <time.h>
//获取文件总行数
int count_line(int n)
{
FILE *fq=fopen("time.txt","r");
char ch=0;
while(1)
{
//通过fgetc函数获取文件每个字符
ch=fgetc(fq);
if(ch==EOF)
{
break;
}
if(ch==10)
{
n++;
}
}
return n;
fclose(fq);
}
int main(int argc, const char *argv[])
{
//以追加形式打开文件
FILE *fp=fopen("time.txt","a+");
//手动刷新缓存区
fflush(fp);
int n=1;
n=count_line(n);
while(1)
{
/*计算时间*/
time_t sys_time=time(NULL);
struct tm *curr_time=localtime(&sys_time);
// char buf[128]="";
fprintf(fp,"%d %4d-%2d-%2d %2d:%2d:%2d\n",n,\
curr_time->tm_year+1900,\
curr_time->tm_mon+1,\
curr_time->tm_mday,\
curr_time->tm_hour,\
curr_time->tm_min,\
curr_time->tm_sec);
//刷新缓存区
fflush(fp);
n++;
//等待1秒
sleep(1);
}
fclose(fp);
return 0;
}
ubun

4、思维导图


被折叠的 条评论
为什么被折叠?



