【文件操作的重难点详解】(一)

简介: 【文件操作的重难点详解】(一)

1 文件的顺序读写

f2442f9d5e1f4bf9a48a52407193711d.png

1.1字符输出函数(fputc)&&字符输入函数(fgetc)

int fputc( int c, FILE *stream );

写入一个字符:

int main()
{
  FILE* pf = fopen("text.txt", "w");
  if (pf == NULL)
  {
    printf("%s\n", strerror(errno));
    return 0;
  }
  else//写入文件
  {
    fputc('b', pf);
    fputc('i', pf);
    fputc('t', pf);
  }
  fclose(pf);
  pf = NULL;
  return 0;
}

其中打开文件用了fopen函数,关闭文件用了fclose函数.刚开始文件中并没有text.txt文件,由于fopen函数中第二个参数为"w"(具体可以看后面补充的图),所以它会自动建立了一个新文件,并用fputc函数将字符'b' 'i' 't'写入到了该文件夹中。


62f04db98d094952bb471f4a1e61c99d.png

双击打开后里面存放的是bit

cd91ec9dc3f547d18da41b06bc349127.png

该函数的作用是一次将一个字符写入到新建立的文件夹中。

补充图:c241f043532a4c6b93daec981f7cc4ee.png

读取一个字符:

int fgetc( FILE *stream );

int main()
{
  FILE* pf = fopen("text.txt", "r");
  if (pf == NULL)
  {
    printf("%s\n", strerror(errno));
    return 0;
  }
  else//读取文件
  {
    printf("%c", fgetc(pf));
    printf("%c", fgetc(pf));
    printf("%c", fgetc(pf));
  }
  fclose(pf);
  ps = NULL;
  return 0;
}

由于刚才建立了文件夹text.txt,所以一个fgetc函数会将文件夹中一个字符读取出来:



4e403834881641fbbb8b8c5ac5484617.png

在这儿我们还得了解一些常识:

  1. 从键盘输入&&输出到屏幕中键盘&&屏幕都是外部设备。
  2. 键盘是标准输入设备,屏幕是标准输出设备。
  3. 任何c程序,在默认编译好之后,运行时都会打开3个输入输出流:stdin(标准输入) stdout(标准输出) stderr(标准错误)

所以我们可以用fgetc&&fputc在键盘上输入信息以及在屏幕上打印信息:

bdfb6532225042d5ad2c300efbcf8abc.png

1.2文本行输出函数(fputs)&&文本行输入函数(fgets)

写入一行字符:

 int fputs( const char *string, FILE *stream );

int main()
{
  FILE* pf = fopen("text.txt", "w");
  if (pf == NULL)
  {
    printf("%s\n", strerror(errno));
    return 0;
  }
//写入文件
  fputs("hello\n", pf);
  fputs("world", pf);
  fclose(pf);
  pf = NULL;
  return 0;
}

与fputc函数不同的是,该函数一次能写入一个字符串的数据到新建立的文件夹中:


c721b88b11b2499ab9240e5402d1b505.png

读取一行字符:

char *fgets( char *string, int n, FILE *stream );

int main()
{
  FILE* pf = fopen("text.txt", "r");
  char buf[100]={0};
  if (pf == NULL)
  {
    printf("%s\n", strerror(errno));
    return 0;
  }
//读取文件
  fgets(buf, 100, pf);
  puts(buf);
  fgets(buf, 100, pf);
  puts(buf);
  fclose(pf);
  pf = NULL;
  return 0;
}

这里定义了一个buf数组,将pf指向文件中的字符串拷贝到buf数组中:

c6b0642c63264d11b0dd0dcc13e338bf.png


用stdin&&stdout来从键盘上输入一行字符以及从屏幕上打印一行字符:

int main()
{
  char buf[100] = { 0 };
  fgets(buf, 100, stdin);
  fputs(buf, stdout);
  //gets(buf);
  //puts(buf);
  return 0;

上述fgets和fputs与gets和puts效果差不多。

目录
相关文章
|
7月前
|
编译器 数据库 C语言
C语言文件操作(一文带你吃透文件各种操作)
有很多学校都是不会讲文件操作这块知识的,但是考试还要考。文件操作在平常中也是有所应用的。这篇文章详细讲述对于文件的各种操作,对于考试和平常引用是完全足够啦!
74 0
|
2月前
|
JSON Go 数据格式
第十四章 文件操作
第十四章 文件操作
29 2
|
6月前
|
存储
文件操作细致详解(下)
文件操作细致详解(下)
|
9月前
|
存储
【文件操作的重难点详解】(二)
【文件操作的重难点详解】(二)
40 0
|
11月前
|
iOS开发 C++
【C++知识点】文件操作(二)
【C++知识点】文件操作(二)
71 0
|
11月前
|
存储 C++ iOS开发
【C++知识点】文件操作(一)
【C++知识点】文件操作(一)
76 0
|
11月前
|
存储 编译器 C语言
【C++知识点】多文件编程
【C++知识点】多文件编程
210 0
|
11月前
|
C语言
抽丝剥茧C语言(高阶)文件操作+练习(中)
抽丝剥茧C语言(高阶)文件操作+练习
|
11月前
|
编译器 数据库 C语言
抽丝剥茧C语言(高阶)文件操作+练习(上)
抽丝剥茧C语言(高阶)文件操作+练习
|
11月前
|
存储 C语言
抽丝剥茧C语言(高阶)文件操作+练习(下)
抽丝剥茧C语言(高阶)文件操作+练习

热门文章

最新文章