如何实现在打开一个文本之后再一行行的读呀

lvguangmin 2013-11-05 01:10:02
如何实现在打开一个文本之后再一行行的读呀
小弟新手,不太熟悉,请贴一下完整的源码让我膜拜一下
...全文
114 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qzf362269994 2013-11-05
  • 打赏
  • 举报
回复
getline()
max_min_ 2013-11-05
  • 打赏
  • 举报
回复

 #include <stdio.h>
       #include <stdlib.h>

       int
       main(void)
       {
           FILE * fp;
           char * line = NULL;
           size_t len = 0;
           ssize_t read;

           fp = fopen("/etc/motd", "r");
           if (fp == NULL)
               exit(EXIT_FAILURE);

           while ((read = getline(&line, &len, fp)) != -1) {
               printf("Retrieved line of length %zu :\n", read);
               printf("%s", line);
           }

           if (line)
               free(line);
           exit(EXIT_SUCCESS);
       }
疯狂的红豆 2013-11-05
  • 打赏
  • 举报
回复
http://blog.csdn.net/zlhy_/article/details/8790793 一行一行的读取文件中的数据,希望对你有帮助
abs618 2013-11-05
  • 打赏
  • 举报
回复
fin >> a >> b >> c; while (!fin.fail()) { process a, b, c; fin >> a >> b >> c; } // end while 或者 while (!fin.fail()) { fin >> a >> b >> c; if (!fin.fail()) process a, b, c; } // end while 或者你也可以直接用 while (fin >> dataValue) { // use the value read } // end while 这两个都是很简单的很容易理解的方法,希望可以帮到你
赵4老师 2013-11-05
  • 打赏
  • 举报
回复
仅供参考
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char ln[MAXLEN];
FILE *f;
int i,z;
int b,n,L;
int main(int argc,char **argv) {
    if (argc<2) {
        printf("Usage:%s fullpathfilename.ext\nget total blank/non-blank/total linenumbers.\n",argv[0]);
        return 1;
    }
    f=fopen(argv[1],"r");
    if (NULL==f) {
        printf("Can not open file [%s]!\n",argv[1]);
        return 2;
    }
    z=0;
    b=0;
    n=0;
    L=0;
    while (1) {
        if (NULL==fgets(ln,MAXLEN,f)) break;
        L=strlen(ln);
        if ('\n'==ln[L-1]) {
            if (0==z) {
                for (i=0;i<L-1;i++) {
                    if (!(' '==ln[i] || '\t'==ln[i])) break;
                }
                if (i<L-1) z=1;//当前行不是空行
            }
            if (0==z) b++; else n++;
            z=0;
        } else {
            if (0==z) {
                for (i=0;i<L;i++) {
                    if (!(' '==ln[i] || '\t'==ln[i])) break;
                }
                if (i<L) z=1;//当前行不是空行
            }
        }
    }
    fclose(f);
    if (L>0 && '\n'!=ln[L-1]) {
        if (0==z) b++; else n++;//最后一行末尾无'\n'也计算
    }
    printf("File:[%s] total blank/non-blank/total linenumbers is %d/%d/%d\n",argv[1],b,n,b+n);
    return 0;
}

64,664

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧