分类
文件编程
多任务编程
网络编程
Linux系统对于文件
思想:everything is file
文件类型:
b block 块设备文件 eg:硬盘
c character 字符设备文件 eg:鼠标,键盘
d directory 目录文件 eg:文件夹
-regular 普通文件 eg:.c txt 图片,音频,视频
l symbolink 软连接 eg:ln -s 源文件 目标文件
s socket 套接字 eg:网络会接触到
p pipe 管道 eg:进程间通信的一种方式 mkfifo pipe(创建一个管道)
文件编程
文件:一组相关数据的集合
Linux系统的结构

库函数—-标准IO库中函数 stdio.h
系统调用
编程:
1.打开—fopen
2.读写—fputc/fgetc //按字符读写
fputs/fgets //string 按字符串读写
fwrite/fread //按对象读写(二进制读写)
3.关闭—-fclose
打开
FILE *fopen(const char *pathname,const char *mode)
功能:流打开函数
参数:
@pathname 文件名 字符串类型 eg:“1.txt”
@mode 打开的模式
r 只读(文件必须存在)
r+ 读写
w 只写(若文件存在,截断为0,若不存在,则创造文件)
w+ 读写
a 追加(文件存在,则在末尾写,不存在则创建)
perror函数
void perror (const char *s)
功能:可以根据errno打印对应错误信息
打印效果:
perror("自定义的信息“);
自定义的信息:错误原因
#include<stdio.h>
int main(int argc,const char* argv[])
{
//argc 命令行参数个数
//argv 指针函数
if(argc!=2)
{
printf("usage:%s <filename>\\n",argv[0]);
return –1;
}
//FILE *fp=fopen(argv[1],"r");
FILE *fp=fopen(argv[1],"w");
if(fp==NULL)
{
// printf("fopen fail\\n");
perror("fopen fail");
return –1;
}
printf("success\\n");
fclose(fp);
return 0;
}
关闭
int fclose(FILE*stream)
功能:关闭流
参数:
@stream 要关闭的流
返回值:
成功返0,失败反EOF 并被errno设置
fgetc
int fgetc(FILE*stream)
功能:从stream中一次读取一个字符数据,返回读到的字符数据
参数:@stream 要读取的文件流指针
返回值:成功返回读取的字符(ASCII码值)
失败返回EOF
补充:
系统默认已经打开了三个流指针
stdin //标准输入 代表键盘
stdout //标准输出 代表终端
stderr //标准出错 —输出出错信息——输出到终端
#include<stdio.h>
int main()
{
#if 0
int ret=fgetc(stdin);
printf("ret=%c:%d\\n",ret,ret);
#endif
int ret=0;
while((ret=fgetc(stdin))!=EOF)
{
printf("ret=%c:%d\\n",ret,ret);
//fputc(ret,stdout);
}
return 0;
}
fputc
int fputc(int c,FILE*stream)
功能:将c中字符写入到stream对应的文件中
参数:@c 表示要写的字符
@stream 表示要写入到的文件(流指针)
返回值:成功 返回写入了字符
失败 EOF
对比文件的命令:
1.diff src.c dest.c
2.vi src.c dest.c -d
#include<stdio.h>
int main()
{
#if 0
int ret=fgetc(stdin);
printf("ret=%c:%d\\n",ret,ret);
#endif
int ret=0;
while((ret=fgetc(stdin))!=EOF)
{
//printf("ret=%c:%d\\n",ret,ret);
fputc(ret,stdout);
}
return 0;
}
fgets
char* fgets(chars,int size,FILEstream)
功能:从stream中读取数据,最多读取size-1个字符,保存到s指定的一块空间
参数:@s——保存数据的一块空间
@size——表示一次读取的字节数
@stream——表示要读取的文件
读取结束的条件:
1.EOF读到了文章最后
2.读到了一个\\n也会读取结束
3.读满size-1个字符结束
注意:
读到\\n会被保存在s对应的空间中
会在buf结束后加一个’\\0’
#include<stdio.h>
int main()
{
char buf[10]={0};
int i=0;
fgets(buf,sizeof(buf),stdin);
for(i=0;i<10;i++)
{
printf("buf[%d]=%c:%d\\n",i,buf[i],buf[i]);
}
return 0;
}




