库函数
c库函数的文件操作独立于具体的操作系统平台。不管在DOS、windows、linux还是在vxworks中都是这些函数。
库函数的创建和打开
FILE *fopen(const char *filename, const char *mode)
filename:
打开的文件名(包含路径,缺省为当前路径)
mode:
打开模式
常见的打开模式:
r, rb
w, wb
a, ab
r+, r+b, rb++
w+, w+b, wh+
a+, a+b, ab+
b用于区分二进制文件和文本文件,这点在DOS、windows系统中是有区分的,但linux不区分二进制文件和文本文件。
库函数-读
size_t fread(void *ptr, size_t size, size_t n, FILE *stream)
功能:
从stream指向的文件中读取n个字段,每个字段为size字节,并将读取的数据放入ptr指向的字符数组中,返回实际已读取的字节数。
库函数-写
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream)
功能:
从缓冲区ptr所指的数组中把把n个字段写到stream指向的文件中,每个字段长为size个字节,返回实际写入的字节数。
库函数—读字符
int fgetc(FILE *stream)
从指定的文件中读一个字符
下面是一个例子:
# include
int main(void)
{
}
库函数-写字符
int fputc(int c, FILE *stream)
向指定的文件中写入一个字符
下面是一个例子:
# include
int main(void)
{
}
库函数-格式化读
fscanf(FILE *stream, char *format[,argument...])
从一个文件中进行格式化输入
例子:
# include
# include
int main(void)
{
int i;
printf("input an integer:");
if(fscanf(stdin, "%d", &i))//stdin默认从键盘输入,写到i中。
printf("the integer read was: %i\n", i);//输出i值。
return 0;
}
库函数-格式化写
int fprintf(FILE *stream ,char *format[, argument,...])
格式化输出到一个文件中
下面是一个例子:
# include
FILE *stream;
int main(void)
{
int i = 10;
double fp = 1.5;
char s[] = "this is a string";
char c = '\n';
stream = fopen("fprintf.h", "w");//以写的方式打开名为fprintf.h的文件,如果没有就创建一个。
fprintf(stream, "%s%c", s, c);
fprintf(stream, "%d\n", i);
fprintf(stream, "%f\n", fp);//stream
fclose(stream);
return 0;
}
库函数-定位
int fseek(FILE *stream, long offset, int whence)
whence:
SEEK_SET
SEEK_CUR
SEEK_END
路径的获取
char *getcwd(char *buffer, size_t size)
我们提供了size大小的buffer,getcwd会把当前路径名copy到buffer中,如果buffer太小,就返回-1.
下面有一个例子:
# include
int main(void)
{
char buf[80];
getcwd(buf, sizeof(buf));//将当前路径载入到buf中。
printf("current working directory:%s\n", buf);显示buf中内容,也就是当前路径
return 0;
}
运行结果:
[regry@campusnetwork test]$ ls
edit.c
file_cp.c
[regry@campusnetwork test]$ ./file_getcwd
current working directory:/home/regry/test
创建目录:
# include
int mkdir(char *dir, int mode)
功能:创建一个新目录。
返回值:0表示成功, -1表示出错。