使用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;
}