码迷,mamicode.com
首页 > 其他好文 > 详细

fopen返回一个文件指针

时间:2015-04-25 00:28:03      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:include   return   count   程序   字母   

#include <stdio.h>
#include <stdlib.h>
int main (int argc,char *argv[])
{
    int ch;
    long count=0;
    FILE *fp;

    if (argc!=2)
{
    printf("请输入一个参数\n");
    exit(1);
    }
    if ((fp=fopen("write.txt","r"))==NULL)
    {
        printf("不能打开这个文件\n");
        exit(2);
    }
    while((ch=getc(fp))!=EOF)
    {
        putc(ch,stdout);
        count++;
    }
    printf("\n共有%d个文字\n",count);
    while((ch=getc(fp))!=‘\n‘)
    {
        putc(ch,stdout);
    }
    fclose(fp);
    return 0;
}


程序运行后一直循环输出同一个非字母字符。

原因:

fopen返回一个文件指针,运行完 while((ch=getc(fp))!=EOF)语句后,fp指针此时的位置在文件未

 造成while((ch=getc(fp))!=‘\n‘)一直为真,所以一直循环


在 while((ch=getc(fp))!=‘\n‘)前加入

 fseek(fp,0L,SEEK_SET);

即可


同时count所显示的字数比write.txt文件中的字符数要多,可见putc读取了‘\n’;


问题:如果我需要改变文本文件中字符为连续文本,是否可以空白字符代替‘\n’

      如果要读取文本文件中的某一行并输出这一行的内容如何操作。

 while((ch=getc(fp))!=EOF)
      {
          while(ch==‘\n‘)
              count++;
          if ((count==3)&&(ch!=‘\n‘))//输出第四行内容并在遇到第四行回车符时停止循环
             putc(ch,stdout); 
               

       }
       
       
  这样是否可行是否有更好的办法?


fopen返回一个文件指针

标签:include   return   count   程序   字母   

原文地址:http://cyuyanstudy.blog.51cto.com/2374172/1638129

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!