linux标准I/O fprintf fopen fclose fgetc fputc fgets fputs printf sscanf fscanf

使用man可以进行查询命令

使用fprintf 实现输入hello,使用缓冲区

#include <stdio.h>
int main(){
	fprintf(stdout,"stdout:hello");  //line  cache
	fflush(stdout);  //force fflush
	fprintf(stderr,"stderr:hello");  // no cache
while(1){}
return 0;
}

以读写方式打开文件test.txt ,文件不存在就报错,使用r+

#include <stdio.h>
int main(int argc,char* argv[]){

	FILE * f =NULL;
	f = fopen(argv[1],"r+");
	if (f == NULL){
		fprintf(stderr,"error,file not exist");
		return -1;
	}
return 0;
}

fgetc和fputc模仿cat命令打印出来

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[]){
char ch;
	FILE * f = NULL;
		f = fopen(argv[1],"r");
	if (argc != 2){
	perror("error:");
	return -1;
	}
if (f == NULL){
perror("error");
return -1;
}
for(;;){
  ch = fgetc(f);
  if (ch == EOF){
  	break;
  }
  fputc(ch,stdout);
}
fclose(f);
	return 0;
}

fgetc和fputc 实现文件复制

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[]){
 	char ch;
	FILE * f1 = NULL;
	FILE * f2 = NULL;
	f1 = fopen(argv[1],"r");
	f2 = fopen(argv[2],"w+");
	if (argc != 3){
	perror("error:");
	return -1;
	}
if (f1 == NULL){
perror("error");
return -1;
}
if (f2 == NULL){
perror("error");
return -1;
}
for(;;){
  ch = fgetc(f1);
  if (ch == EOF){
  	break;
  }
  fputc(ch,f2);
}
fclose(f1);
fclose(f2);
	return 0;
}

fgets和fputs 实现文件复制

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[]){
        char buffer [64]={0};
        char * p = NULL;
        FILE * f1 = NULL;
        FILE * f2 = NULL;
        f1 = fopen(argv[1],"r");
        f2 = fopen(argv[2],"w+");
        if (argc != 3){
        perror("error:");
        return -1;
        }

if (f1 == NULL){
perror("error");
return -1;
}

if (f2 == NULL){
perror("error");
return -1;
}

for(;;){
  p = fgets(buffer,sizeof(buffer),f1); //buffer ,64 ,f1 file
  if (p == NULL){
        break;
  }

  fputs(buffer,f2);
}
fclose(f1);
fclose(f2);
        return 0;
}
//fgets
//会存储\n
//自动末尾加'\0'
//如果一行小于size 读取一行
//大于size 读取size返回
//fputs
//不会写'\0'

pfintf() stdout
fpintf() 文件
sprintf() 字符串缓冲区

#include <stdio.h>
//10 20 30 
//10-20-30
int main(int argc,char* argv[]){
int a =10,b =20,c=30;
char buffer [64]={0};
        FILE * f =NULL;
        f = fopen(argv[1],"w+");
        if (f == NULL){
                fprintf(stderr,"error,file not exist");
                return -1;
        }
        sprintf(buffer,"%d-%d-%d",a,b,c);
        printf("buffer:%s\n",buffer);
        fprintf(f,"%d-%d-%d",a,b,c);
        fclose(f);

return 0;
}     

scanf() stdout
fscanf() 文件
sscanf() 字符串缓冲区 就是字符数组

#include <stdio.h>
//10 20 30 
//10-20-30
int main(int argc,char* argv[]){
int a =0,b =0,c=0;
int d,e,q;
char buffer [64]="10-20-30";
	FILE * f =NULL;
	f = fopen(argv[1],"r");
	if (f == NULL){
		fprintf(stderr,"error,file not exist");
		return -1;
	}

	fscanf(f,"%d-%d-%d",&a,&b,&c);
	
	sscanf(buffer,"%d-%d-%d",&d,&e,&q);
printf("a=%d,b=%d,c=%d",a,b,c);
printf("d=%d,e=%d,q=%d",d,e,q);
	fclose(f);

return 0;
}

获取系统时间,按照<2022-5-8 23::15:00> 格式写入到文件中

#include <stdio.h>
#include <time.h>
int main(int argc,char* argv[]){
        time_t t = time(NULL);
        struct tm *local = localtime(&t);

        FILE * f =NULL;
        f = fopen(argv[1],"w+");
        if (f == NULL){
                fprintf(stderr,"error,file not exist");
                return -1;
        }
        fprintf(f,"<%d-%d-%d %d:%d:%d>",local->tm_year + 1900,local->tm_mon + 1,local->tm_mday\
                        ,local->tm_hour,local->tm_min,local->tm_sec);
        fclose(f);

return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值