库函数
C库函数的文件操作是独立于具体的操作系统平台的,不管是DOS,Windows,linux还是在Vxworks中都是这些库函数
FILE *fopen(const char *filename,const char *mode)
l filename 打开的文件名(包含路径,没有则为当前路径)
l mode 打开模式
常见打开模式:
Ø r,rb 只读方式打开
Ø w,wb 只写方式打开,如果文件不存在,则创建
Ø a,ab 追加方式打开,若不存在,创建
Ø r+,r_b,rb+ 读写方式打开
Ø w+,w+b,wh+ 读写方式打开,若不存在,创建
Ø a+,a+b,ab+ 读和追加方式打开。如果文件不存在,创建
库函数—读
size_t fread (void *ptr,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<stdio.h>
main()
{
FILE *fp;
char ch;
if ((fp=fopen(“c1.txt”))==NULL)
{
printf(\n cannot open file ,press any key exit!);
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
库函数—写字符
int fputc(int c, FILE *stream)
像指定文件中写入一个字符
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen(“string”,“wt+”))==NULL)
{
printf(“cannot open file ”);
getch();
exit(1);
}
printf(“input a string\n”);
ch=getchar(); //从键盘输入中获取一个字符
while(ch!=’\n’) //直到输入回车键
{
fputc(ch,fp);
ch=getchar();
}
printf(“\n”);
fclose(fp);
}
库函数—格式化读
fscanf(FILE *stream,char *format[,argument,…..]) //’stream’表示一个文件
从一个流中进行格式化输入
#include<stdlib.h>
#include<stdio.h>
int main()
{
int i;
printf(“input an integer”);
if (fscanf(stdin,”%d”,&i)) //‘stdin’标准的输入文件。输入一个整形(也可
//以是c或s等)格式化到i中
Printf(“the integer read was %i\n”,i);
return 0;
}
库函数—格式化写
Int fprintf(FILE *stream, char *format[,argument,……])
格式化输出到一个流中
#include<stdio.h>
FILE *stream;
Int main()
{
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); //以字符串和字符的格式(char s[]=”this is a
// string”; char c=’\n’;)把数据传到stream所指//向的fprintf.out文件中
fprintf(stream,”%d\n”,i);
fprinf(stream,”%f\n”,fp);
fclose(stream);
}
库函数—定位
int fseek(FILE *stream, long offset ,int whence)
whence:
SEEK_SET 从文件的开始处开始搜索
SEEK_CUR 从当前位置开始搜索
SEEK_END 从文件的结束处开始搜索
路径获取
在编写程序的时候,有时候我们需要得到当前路径。C库函数提供了getcwd来解决这个问题
char *getwd(char *buffer,size_t size)
我们提供size大小的buffer,getcwd会把当前的路径名复制到buffer中,如果buffer太小,返回-1.
#include<unistd.h>
Main()
{
Char buf[80];
Getcwd(buf,sizeof(buf)); //sizeof中放了buf地址
Printf(“current working directory :%sn”,buf);
}
创建目录
#include<sys/stat.h>
Int mkdir (char *dir,int mode)
功能:创建一个目录
返回值:成功 0.失败-1