【C标准头文件】<stdio.h>

输出到标准输出

函数说明
int printf(const char *format, …)发送格式化输出到标准输出 stdout
int vprintf(const char *format, va_list arg)使用参数列表发送格式化输出到标准输出 stdout
int putchar(int char)标准输出 stdout 中写入一个字符
int puts(const char *str)标准输出 stdout 中写入一个字符串

打开/关闭文件

//打开文件
FILE *file = fopen("/data/data/com.whf.nativedemolist/cache/readme.txt", "w+");
if (file == nullptr) {
    LOGD("open error = %s", strerror(errno));
    return;
}

//关闭文件
fclose(file);

fopen的参数2为打开文件的方式,如下:

mode说明
r只读,文件必须存在
w只写,如果文件不存在则自动创建,如果文件存在则清空文件内容
a追加,如果文件不存在则自动创建,如果文件存在则追加
r+读写,文件必须存在
w+读写,相当于w和r+,文件不存在则创建,文件存在则清空
a+读写,相当于a和r+,文件不存在则创建,文件存在则追加

写入文件

函数说明
int putc(int char, FILE *stream)向指定的流中写入一个字符
int fputs(const char *str, FILE *stream)向指定的流中写入字符串
int fprintf(FILE *stream, const char *format, …)向指定的流中写入格式化字符串
int vfprintf(FILE *stream, const char *format, va_list arg)使用参数化列表向指定的流中写入格式化字符串
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)将ptr所指数组中的数据写入指定的流中
FILE *file = fopen("/data/data/com.whf.nativedemolist/cache/readme.txt", "w+");
if (file == nullptr) {
	LOGD("open error = %s", strerror(errno));
	return;
}

//写入buffer
int size1 = fputs("one line START END\n", file);

//关闭文件
fclose(file);

读取文件

函数说明
int fgetc(FILE *stream)从指定的流 stream 获取下一个字符
char *fgets(char *str, int n, FILE *stream)从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)从给定流 stream 读取数据到 ptr 所指向的数组中
//打开文件
FILE *file = fopen("/data/data/com.whf.nativedemolist/cache/readme.txt", "r");
if (file == nullptr) {
    LOGD("open error = %s", strerror(errno));
    return;
}
char buffer[1024];
memset(buffer, 0, 1024);
//一次读取一行 或 1024个字符
while (fgets(buffer, 1024, file) != NULL) {
    LOGD("read line = %s", buffer);
}
fclose(file);
//打开文件
FILE *file = fopen("/data/data/com.whf.nativedemolist/cache/readme.txt", "w+");
if (file == nullptr) {
    LOGD("open error = %s", strerror(errno));
    return;
}

fputs("one line START === one line END\n", file);
fputs("two line START === two line END\n", file);
fputs("three line START === three line END\n", file);

char buffer[8];
int size;
//参数1 -- 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
//参数2 -- 这是要读取的每个元素的大小,以字节为单位。
//参数3 -- 这是元素的个数,每个元素的大小为 <参数2> 个字节。
//参数4 -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。
while ((size = fread(buffer, 1, 8, file)) != 0) {
    //打印结尾会有乱码,因为buffer中没有\0
    LOGD("read buffer size=%d %s", size, buffer);
}
fclose(file);

文件读写位置

函数说明
int fseek(FILE *stream, long int offset, int whence)设置流 stream 的文件位置为给定的偏移(long类型)
long int ftell(FILE *stream)返回给定流 stream 的当前文件位置(long类型)
int fsetpos(FILE *stream, const fpos_t *pos)设置流 stream 的文件位置为给定的偏移
int fgetpos(FILE *stream, fpos_t *pos)获取流 stream 的当前文件位置,并把它写入到 pos
void rewind(FILE *stream)设置文件位置为给定流 stream 的文件的开头
FILE *file = fopen("/data/data/com.whf.nativedemolist/cache/readme.txt", "w+");
if (file == nullptr) {
    LOGD("open error = %s", strerror(errno));
    return;
}

fputs("one line START === one line END\n", file);
fputs("two line START === two line END\n", file);

/**
 * 参数1 -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
 * 参数2 -- 这是相对 whence 的偏移量,以字节为单位。
 * 参数3 -- 这是表示开始添加偏移 offset 的位置。
 *
 * 参数3常量
 * SEEK_SET:文件开头
 * SEEK_CUR:文件指针当前位置
 * SEEK_END:文件结尾
 */
fseek(file, 5, SEEK_SET);

fpos_t position;
fgetpos(file, &position);
LOGD("fgetpos %ld", position);

position = 2;
fsetpos(file, &position);

其他

函数说明
int rename(const char *old_filename, const char *new_filename)重命名文件
int remove(const char *filename)删除文件
int sprintf(char *str, const char *format, …)发送格式化输出到字符串
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值