云计算百科
云计算领域专业知识百科平台

嵌入式学习Day25——Linux应用软件编程02

今天继续标准IO的学习
先对几种文件操作方法进行对比总结
进行文件的拷贝操作时:
fgetc/fputc:适用于文本文件和二进制文件
fgets/fputs:只适用于文本文件(不能读写二进制文件)

比较gets与fgets:
fgets:
1.从指定的已打开文件中读取最多一行数据(遇到\\n停止读取)
2.fgets保留\\n字符并在字符串末尾添加\\0
3.fgets最多读取size-1个字符,最后一个位置存放\\0

gets:
1.指定从终端设备读取数据
2.gets会将终端读到的\\n字符替换成\\0
3.gets是危险的,因为在读取时,没有大小的限制,可能造成内存越界

而对于fgetc与getchar,fputc与putchar来说:
int ret = fgetc(stdin); <=> int ret = getchar();
fputc('a', stdout); <=> putchar('a');

Linux操作系统默认已打开的三个文件:
FILE * –>stdin:标准输入流—->标准输入设备:键盘
FILE * –>stdout:标准输出流—->标准输出设备:显示屏
FILE * –>stderr:标准出错流—->标准出错设备:显示屏

fread/fwrite:读写固定大小的二进制数据(例:结构体)、文本文件

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

功能:向文件中写入nmemb个大小是size的数据到文件中
参数:
    ptr:要写入的数据的首地址
    size:每个元素的字节数
    nmemb:要写入的元素个数
    stream:要写入的文件流指针
返回值:
    成功:返回实际写入的元素个数

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

功能:从文件中读取nmemb个大小是size的元素
参数:
    ptr:存储读取到数据的首地址
    size:每个元素的大小
    nmemb:希望从文件中读取的元素个数
    stream:要读的文件流指针
返回值:
    成功:实际读到的元素个数
    读到文件末尾:0

4)流定位相关接口:
①fseek:

int fseek(FILE *stream, long offset, int whence);

功能:实现文件流重新定位
参数:
    stream:需要定位的文件流指针
    offset:偏移量
    whence:定位的相对位置
    SEEK_SET:从头进行偏移
    SEET_CUR:从当前位置开始偏移
    SEET_END:从文件末尾偏移
返回值:
    成功:返回当前的偏移量
    失败:-1

②ftell:

long ftell(FILE *stream);

功能:获取流的当前位置到文开头的偏移量
参数:
    stream:文件流
返回值:
    偏移量:byte

③rewind:

void remind(FILE *stream);

功能:流复位函数(复位到开头)
rewind(fp) <==> fseek(fp, O, SEEK_SET);

 

赞(0)
未经允许不得转载:网硕互联帮助中心 » 嵌入式学习Day25——Linux应用软件编程02
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!