| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1548 人关注过本帖
标题:从不定长文本中读取整行,输出最后会多出一个空行问题
取消只看楼主 加入收藏
size_t
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2020-6-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
从不定长文本中读取整行,输出最后会多出一个空行问题
如何避免输出最后的空行

程序代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char *readLine(FILE *file){
    if(file == NULL){
        exit(1);
    }
    /* malloc linebuffer */
    int baseLen = 256;  // 初始长度设置256字符
    char *lineBuf = (char *)malloc(sizeof(char) * baseLen);
    if(lineBuf == NULL){
        exit(1);
    }

    int ch,index=0;
    while((ch=fgetc(file)) != 10 && ch != EOF){ // ASCII 10 => "\n"
        lineBuf[index] = ch;
        index++;

        if(index == baseLen){
            baseLen += 256;
            lineBuf = (char *)realloc(lineBuf, baseLen); // 内存不足时每次再重新分配256字符空间
            if(lineBuf == NULL){
                exit(1);
            }
        }
    }
    lineBuf[index] = '\0'; // end of string add '\0'

    return lineBuf;
}

int main(int argc, char *argv[])
{
    FILE *fp = fopen(argv[1],"r");
    if(fp == NULL){
        exit(1);
    }
    while(!feof(fp)){
        char *line = readLine(fp);
        printf("%s\n",line);
    }
    exit(0);
}
搜索更多相关主题的帖子: exit char NULL FILE index 
2020-11-09 08:40
size_t
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2020-6-5
收藏
得分:0 
回复 2楼 rjsp
我就是不懂才来学习的,那么请给出正确用法吧,谢谢
2020-11-09 09:42
size_t
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2020-6-5
收藏
得分:0 
回复 4楼 rjsp
gcc 4.4.7 Segmentation fault

[此贴子已经被作者于2020-11-9 13:21编辑过]

2020-11-09 13:14
size_t
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2020-6-5
收藏
得分:0 
回复 6楼 rjsp
找到问题了,直接运行没给文件的问题

[此贴子已经被作者于2020-11-9 14:14编辑过]

2020-11-09 14:13
快速回复:从不定长文本中读取整行,输出最后会多出一个空行问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016967 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved