美文网首页
C语言文件输入和输出操作的学习心得(二)

C语言文件输入和输出操作的学习心得(二)

作者: nothingCheung | 来源:发表于2017-01-16 18:06 被阅读0次
    概述

    C语言文件输入和输出操作的学习心得(一)介绍了一些关于C语言文件写入的知识,本文将对前文进行延伸。前文的实例中输入文件的字符是固定的,当我们需要从键盘输入字符写入文件该如何办呢?本文针对上述问题提供了相关函数的解释和一个可参考的实例。

    getchar()

    头文件:#include <stdio.h>
    原型:int getchar(void);
    功能:用于从标准输入控制台读取字符
    【参数】
    该函数没有参数。
    【返回值】
    函数的返回值为用户输入的第一个字符的ASCII码,若出错返回-1,且将用户输入的字符回显到屏幕。如果用户在按回车键之前输入了不只一个字符,其他字符会保留在键盘缓冲区中,等待后续getchar()调用读取。也就是说,后续的getchat()调用不会等待用户按键,而是直接读取缓冲区中的字符,直到缓冲区的字符读取完毕后,才等待用户按键。
    【说明】
    getchar()非真正函数,而是getc(stdin)宏定义。每次只能输入一个字符。

    fputc()

    相关函数:fopen, fwrite, fscanf, putc,fgetc(以上函数本文不作详细解释。如有需要,读者可自行查阅相关资料)
    头文件:#include <stdio.h>
    原型:int fputc(int c, FILE * stream);
    功能:fputc()会将参数c 转为unsigned char 后写入参数stream 指定的文件中
    【参数】
    c:需要写入文件的字符
    stream:被写入文件的指针变量
    【返回值】
    fputc()会返回写入成功的字符, 即参数c. 若返回EOF 则代表写入失败

    EOF

    EOF(end of file)是一个表示文件结束的标志。通俗来说,看到EOF就说明这个文件已经到了尽头。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。EOF和我们将要说明的实例有很密切的关系。我们向计算机输入字符时,计算机如何知道什么时候结束输入呢?必需认为输入一个代表结束的信号计算机才会停止输入,这个信号就是EOF。具体操作为:在新的一行输入“Ctrl+Z”然后回车,相当于告诉计算机输入结束。

    实例
    #include <stdio.h>
    
    int main()
    {
      FILE *pFile;
      char c;
      pFile = fopen("test.txt", "w");
    
       if(pFile == NULL)//文件指针为空时的措施
       {
           printf("can not open the file");
           fclose(pFile);
           return 0;
       }
        printf("enter .....\n");  
        while (c != EOF) {  
            c = getchar();//获取键盘输入的字符
            fputc(c, pFile); //写入文件    
        }
        fclose(pFile);//关闭文件
      return 0;
    }
    

    【说明】
    以上的实例演示了如何从键盘中输入字符并写入test.txt文本文件中,手动输入“Ctrl+z”为结束。请大家注意while()循环的条件,当c不为EOF时循环一直进行。虽然c没有赋值,但是其默认值不为EOF,可见即使c即使没有幅值其默认值不为EOF。由于getchar()函数每一次只能获取一个字符,所以需要不断循环才能获取一段字符串。fputc()函数同样每次只能写入一个字符,当getchar()获取字符后,fputc()马上将这个字符写进文件直到c的值为EOF为止。
    有兴趣的朋友可以尝试将while()循环注释掉,只保留循环内的两条语句。运行后,输入"what a wonderful world!”。写进test.txt的字符只有“w”,验证了getchar()函数每次只能获取一个字符。
    其实,实现获取键盘输入写入文件的实例还有很多,本文只提供其中一个实例作为参考。如有其他实例,欢迎各位朋友前来交流。

    相关文章

      网友评论

          本文标题:C语言文件输入和输出操作的学习心得(二)

          本文链接:https://www.haomeiwen.com/subject/rujpbttx.html