linux文件编辑-库函数-fopen、frea…

库函数

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)
{
  FILE *fp;
  char ch;
  if(fp=fopen("c1.txt", "rt") == NULL)
  {
  printf("\ncannot open file strike any key exit");
  getchar();
  exit(1);
  }
  ch = fgetc(fp);
  while(ch != EOF)
 {
  putchar(ch);
  ch = fgetc(fp);
 }
  fclose(fp);
  return 0;
}

 

库函数-写字符

int fputc(int c, FILE *stream)

向指定的文件中写入一个字符

下面是一个例子:

# include
int main(void)
{
 FILE *fp;
 char ch;
 if((fp = fopen("string", "wt+")) == NULL)//这里创建了一个名为string的文件。
 {
 printf("cannot open file, strike any key exit");
 getchar();
 exit(1);
 }
 printf("input a string :\n");
 ch = getchar();
 while(ch != '\n')
 {
 fputc(ch, fp);
 ch = getchar();
 }//将输入的字符串写入到string这文件中。 
 printf("\n");
 fclose(fp);
 return 0;
}

 

库函数-格式化读

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 指向fprintf.h文件,所以文件中的内容就是输入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_create.c  file_fprintf.c  file_fscanf.c  file_getcwd.c
file_cp.c  file_fgetc.c   file_fputc.c    file_getcwd    file_open.c
[regry@campusnetwork test]$ ./file_getcwd
current working directory:/home/regry/test

 

创建目录:

# include

 

int mkdir(char *dir, int mode)

功能:创建一个新目录。

返回值:0表示成功, -1表示出错。





 


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值