库函数-访问文件
1. 库函数-创建和打开
#
FILE *fopen(const char *filename, const char *mode)
filename: 要打开的文件名
mode: 打开模式
r,rb: 只读方式打开
w,wb: 只写方式打开,如果文件不存在,则创建该文件
a,ab: 追加方式打开,如果文件不存在,则创建该文件
r+,r+b,rb+: 读写方式打开
w+,w+b,wb+: 读写方式打开,如果文件不存在,则创建该文件
a+,a+b,ab+: 读和追加方式打开,如果文件不存在,则创建该文件
b的意思是: Windows下有二进制文件和文本文件的区分,b代表打开的是二进制文件。在Linux下,r和rb是一样的。
2. 库函数-读
size_t fread(void *ptr, size_t size, size_t n, FILE *stream)
从stream指向的文件中读取n个字段,每个字段为size个字节,并把读出的数据放入ptr所指的字符数组中,返回实际已读字节数。
3. 库函数-写
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream)
从缓冲区ptr所指的数组中把n个字段写到stream所指的文件中,每个字段长为size个字节,返回实际写入的字段数。
4. 库函数-读字符
#include<stdio.h>
int fgetc(FILE *stream)
从指定的文件中读一个字符
5. 库函数-写字符
#include<stdio.h>
int fputc(int c, FILE *stream)
向指定的文件写入一个字符。
6. 库函数-格式化读
fscanf(FILE *stream, char *format[, argument...]
从一个流中进行格式化输入
7. 库函数-格式化写
int fprintf(FILE *stream, char* format[,argment...])
格式化输出到一个流中
8. 库函数-定位
int fseek(FILE *stream, long offset, int whence)
whence
SEEK_SET 从文件的开始处开始搜索
SEEK_CUR 从当前位置开始搜索
SEEK_END 从文件的结束处开始搜索
9. 库函数-路径获取
char *getcwd(char *buffer, size_t size)
获取当前路径。把当前的路径copy到buffer中,如果buffer太小,函数返回-1
10. 库函数-创建目录
#include<sys/stat.h>
int mkdir(char *dir, int mode)
创建一个新目录
返回值:0表示成功,-1表示出错
1. 库函数-创建和打开
#
FILE *fopen(const char *filename, const char *mode)
filename: 要打开的文件名
mode: 打开模式
r,rb: 只读方式打开
w,wb: 只写方式打开,如果文件不存在,则创建该文件
a,ab: 追加方式打开,如果文件不存在,则创建该文件
r+,r+b,rb+: 读写方式打开
w+,w+b,wb+: 读写方式打开,如果文件不存在,则创建该文件
a+,a+b,ab+: 读和追加方式打开,如果文件不存在,则创建该文件
b的意思是: Windows下有二进制文件和文本文件的区分,b代表打开的是二进制文件。在Linux下,r和rb是一样的。
2. 库函数-读
size_t fread(void *ptr, size_t size, size_t n, FILE *stream)
从stream指向的文件中读取n个字段,每个字段为size个字节,并把读出的数据放入ptr所指的字符数组中,返回实际已读字节数。
3. 库函数-写
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream)
从缓冲区ptr所指的数组中把n个字段写到stream所指的文件中,每个字段长为size个字节,返回实际写入的字段数。
4. 库函数-读字符
#include<stdio.h>
int fgetc(FILE *stream)
从指定的文件中读一个字符
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("c1.txt","rt")) == NULL)
{
printf("\nCannot open file strike any key exit!")
getch();
exit(1);
}
ch = fgetc(fp);
while(ch != EOF)
{
putchar(ch);
ch = fgetc(fp);
}
}
5. 库函数-写字符
#include<stdio.h>
int fputc(int c, FILE *stream)
向指定的文件写入一个字符。
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp = fopen("string", “wt+”)) == NULL){
printf("Cannot open file, strike any key exit!");
getch();
exit(1);
}
printf("input a string:\n");
ch = getchar();
while(ch != '\n'){
fputc(ch, fp);
ch = getchar();
}
printf("\n");
fclose(fp);
}
6. 库函数-格式化读
fscanf(FILE *stream, char *format[, argument...]
从一个流中进行格式化输入
#include<stdlib.h>
#include<stdio.h>
int main(void)
{
int i;
printf("Input an integer:");
if(fscanf(stdin, "%d", &i)) //stdin 标准输入设备
printf("The integer read was:%d\n", i)
return 0;
}
7. 库函数-格式化写
int fprintf(FILE *stream, char* format[,argment...])
格式化输出到一个流中
#include<stdio.h>
#include<process.h>
FILE *stream;
void main(void)
{
int i = 10;
double fp = 1.5;
char s[] = "this is a string";
char c = '\n';
stream = fopen("fprintf.out","w");
fprintf(stream, "%s%c", s, c);
fprintf(stream, "%d\n", i);
fprintf(stream, "%f\n",fp);
fclose(stream);
}
8. 库函数-定位
int fseek(FILE *stream, long offset, int whence)
whence
SEEK_SET 从文件的开始处开始搜索
SEEK_CUR 从当前位置开始搜索
SEEK_END 从文件的结束处开始搜索
9. 库函数-路径获取
char *getcwd(char *buffer, size_t size)
获取当前路径。把当前的路径copy到buffer中,如果buffer太小,函数返回-1
#include<unistd.h>
main()
{
char buf[80];
getcwd(buf, sizeof(buf));
printf("current working directory:%s", buf);
}
10. 库函数-创建目录
#include<sys/stat.h>
int mkdir(char *dir, int mode)
创建一个新目录
返回值:0表示成功,-1表示出错