输出到标准输出
函数 | 说明 |
---|
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;
}
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);
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;
while ((size = fread(buffer, 1, 8, file)) != 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);
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, …) | 发送格式化输出到字符串 |