物联网学习教程—文件的读写一

文件的读写

一、字符输入输出函数(fputs() fgets())

 

fputs 函数

函数调用:

fputs ( ch fp )

函数功能:

将字符(ch 的值)输出到 fp 所指向的文件中去。

返回值:

如果输出成功,则返回值就是输出的字符;

如果输出失败,则返回一个EOF

fgets 函数

 

函数调用:

ch fgets fp );

函数功能:

从指定的文件读入一个字符, 该文件必须是以读或 读写方式打开的。

返回值:

读取成功一个字符,赋给ch。 如果遇到文件结束符,返回一个文件结束标志 EOF

常见的读取字符操作

 

从一个文本文件顺序读入字符并在屏幕上显示出来:

   ch = fgetc fp );

   while ch =EOF

  {

       putchar ch );

        ch = fgetc fp );

 

注意:EOF 不是可输出字符,因此不能在屏幕上显示。

由于字符的ASCII 码不可能出现-1,因此 EOF 定义为 -1是合适的。当读入的字符值等于-1时,表示读入 的已不是正常的字符而是文件结束符。

常见的读取字符操作

 

从一个二进制文件顺序读入字符:

   while (! feof fp ))

  {

        ch = fgetc fp );

 

 

注意:ANSI C 提供一个 feof ()函数来判断文件是否真的结束。如果是文件结束,函数 feof fp )的值为1 (真);否则为0(假)。以上也适用于文本文件的读取。

#include <stdlib.h>

#include <stdio.h>

void   main(void)

 {  FILE *fp;

       char ch,filename[10];

       scanf("%s",filename);

       if((fp=fopen(filename,"w"))==NULL) {

        printf("cannot open file\n");

        exit(0); /* 终止程序 */}

     ch=getchar( ); /* 接收执行 scanf 语句时最后输入的回车符 */

     ch=getchar( ); /* 接收输入的第一个字符 */

     while(ch!='#'{

               fputc(ch,fp);putchar(ch);

  ch=getchar(); }

     fclose(fp);

 }

 

运行情况如下:

file1.c              (输入磁盘文件名)

computer and c#(输入一个字符串)

computer and     (输出一个字符串)

#include <stdlib.h>

#include <stdio.h>

 main( )

{FILE *in,*out;

 char ch,infile[10],outfile[10];

 printf("Enter the infile name:\n");

 scanf("%s",infile);

 printf("Enter the outfile name:\n");

 scanf("%s",outfile);

 if((in=fopen(infile,"r"))==NULL)

 { printf("cannot open infile\n");

      exit(0);}

  if((out=fopen(outfile,"w"))==NULL)

      { printf("cannot open outfile\n");

            exit(0);}

       while(!feof(in))fputc(fgetc(in),out);

            fclose(in);

            fclose(out);}

运行情况如下:

Enter the infile name

file1.c(输入原有磁盘文件名

Enter the outfile n ame:

file2.c (输入新复制的磁盘文件名) 

程序运行结果是将file1.c文件中的内容复制到 file2.c中去。

运行方法:#include <stdlib.h>

#include <stdio.h>

main(int argc,char *argv[ ])

{FILE *in,*out;

 char ch;

 if (argc!=3)

 { printf("You forgot to enter a filename\n");

exit(0); }

if((in=fopen(argv[1],"rb"))==NULL)

{ printf("cannot open infile\n");

      exit(0);}

            if((out=fopen(argv[2],"wb"))==NULL)

     { printf("cannot open outfile\n");

            exit(0);}

            while(!feof(in)) fputc(fgetc(in),out);

 fclose(in);

 fclose(out);}

 

设经编译连接后得到的可执行文件名为a.exe ,则在 DOS 命令工 作方式下,可以输入以下的命令行:

C>a  file1.c file2.c

file1.c和file2.c,分别输入到argv[1] 和argv[2]中,argv[0]的内容为 a ,argc的

值等于3

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69914734/viewspace-2655115/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69914734/viewspace-2655115/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值