C语言常用文件处理函数总结

C语言一打文件处理函数,在此整理了一些常用文件处理函数(非常基础),并也整理了python的文件处理方式(也非常基础),以便作个比较。

🚌 标准文件的处理

  • C程序会自动打开三个文件:标准输入(对应的文件指针:stdin)、标准输出(stdout)、标准错误输出(stderr)
  • 默认的标准输入是键盘,默认的标准输出和标准错误输出是显示器
  • 输入函数:
  • getchar(): 读取一个字符 ch = getchar()
  • gets(): 读取一行字符串 gets(str) 读取换行符并丢弃
  • scanf():格式化输入
  • 输出函数:
  • putchar(): 输出一个字符 putchar(ch)
  • puts(): 输出字符串 puts(str) 会在末尾添加换行符
  • printf(): 格式化输出
  • 上述函数的获取输入或打印输出的对象都是标准输入输出文件,一般也就是显示器和键盘
  • 使用重定向可把其它文件作为标准文件,但标准错误输出的输出内容仍会发到屏幕上

🐹 文件的打开关闭

  • 打开(指定模式):fopen() e.g. fp = fopen("..file..", "w+") 返回的是文件指针,不能打开文件就返回NULL
  • 关闭:fclose(fp) 不能成功关闭返回EOF,成功是0

🎉 文件的读取和写入

  • getc()和putc():读取字符 比getchar()、putchar()多了一个文件指针参数
  • ch = getc(fp)
  • putc(ch, fp)
  • fgets()和fputs(): 读取字符串
  • fgets(): fgets(buf, MAX, fp)(buf是字符串地址) 读取换行符并保存 何时停止:读到一行结尾or读到MAX-1个字符or读到EOF
  • fputs(): fputs(buf,fp) fputs不会添加换行符
  • fprintf()和fscanf():读取字符串(格式化) 比printf()、scanf()多了一个文件指针参数(作为第一个参数)
  • fread()和fwrite(): 以二进制形式进行读写操作; 第二个参数是一个数据块的大小,第三个参数是数据块的数目
  • fread():e.g. fread(buffer, 1, 256, fp);
  • fwrite(): e.g. fwrite(buffer, 1, 256, fp);

🎂 文件的定位

  • fseek: 让你像数组一样对待一个文件 e.g. fseek(fp, 0L, SEEK_SET)
  • 第一个参数是文件指针,第二个参数是偏移量,第三个参数是文件起点模式(SEEK_SET SEEK_CUR SEEK_END)
  • 一切正常返回0,有错误出现返回-1
  • ftell: 返回文件当前位置 e.g. current = ftell(fp) 它通过返回距文件开始处的字节数目来确定文件位置,文件的第一个字节到文件开始处的距离是0字节.
  • rewind:把当前文件指针移动到文件开始 e.g. rewind(fp)

🍮 文件读写函数的返回值汇总

  • fopen 正常返回:被打开文件的文件指针。异常返回:NULL,表示打开操作不成功。
  • fclose 正常返回:0。异常返回:EOF,表示文件在关闭时发生错误。
  • fgets 正常返回:返回字符串的内存首地址,即str的值。非正常返回(发生错误或到了文件结尾):返回一个NULL值
  • fputs 正常返回:写入文件的字符个数,即字符串的长度。非正常返回:返回一个NULL值。
  • gets 同fgets
  • puts 一般不用其返回值
  • fprintf 返回值无。
  • fscanf 成功返回读入的参数的个数,失败返回EOF(-1)
  • fread fwrite 返回成功读取的数据块数目
  • scanf 同fscanf
  • printf 一般不用其返回值

🚜 比较:python的常用文件处理函数

  1. 读取文件: ```python '''四种方式''' with open('py.txt') as file_object: # 使用with即使发生错误可以关闭文件 contents = file_object.read() # 全部读取,返回字符串 print(contents.strip())

with open('py.txt') as file_object: for line in file_object: # 一行一行读取,返回字符串 print(line.rstrip())

with open('py.txt') as file_object: lines = file_object.readlines() # 读取所有行,返回列表 for line in lines: print(line)

file_object = open('py.txt') # 打开方式不用with ... file_object.close() ```

  1. 写入文件:

file_object.write("...")

  1. 指针移动(相当于c中的fseek)

seek()方法(类似C中的fseek()函数)可以在文件中移动文件指针到不同的位置. 位置的默认值为 0 , 代表从文件开头算起, 1 代表从当前位置算起, 2 代表从文件末尾算起. c中,0, 1, 2 分别对应着常量 SEEK_SET, SEEK_CUR,以及 SEEK_END.

e.g. file_object.seek(5,0)

20190819

results matching ""

    No results matching ""