如何在c中的文本文件中获取空行?

时间:2017-10-26 05:24:27

标签: c file-handling

我有一个文件,其中包含一些有关异常的数据。每个数据字节都以新行写入文本文件中。现在要分离不同异常的数据,我添加了一个空行,即" \ n"在每个数据集的最后一个字节之后。我正在使用这个功能:

while ((read = getline(&line, &len, fp)) != -1)
{
     data[counter++] = (unsigned char)strtol(line,NULL,16);
     printf("The data received is %08x\n\r", data[counter - 1]);
} 

那么如何检测该行是否为空行?

1 个答案:

答案 0 :(得分:0)

继续我的评论,所有面向行的输入函数(例如fgets和POSIX getline)读取并包含'\n' in他们填充的缓冲区,line。因此,要检查您是否遇到(或读取)空行,您只需要检查line的内容是否为'\n'。要获得line中的第一个字符,您需要做的就是取消引用它,例如*line并将第一个字符与'\n'字符进行比较,例如

while ((read = getline(&line, &len, fp)) != -1)
{
    if (*line == '\n') {
        /* handle empty line */
    }
    data[counter++] = (unsigned char)strtol(line,NULL,16);
    printf("The data received is %08x\n\r", data[counter - 1]);
}

注意 line取消*lineline[0]相同。你只是检查第一个字符。这是由于指针等效于索引。例如,指针表示法中的line[x]*(line + x)。 (x=0时,它只是*line

另请注意,您应通过在每次转化后加入strtol并检查errno.h来验证errno转化。您还应该将strtol的结果保存在long中以防止欠/溢出,然后将tmp0UCHAR_MAX进行比较(在{{1}中找到在分配给limits.h之前,例如

data[counter++]

仔细看看,如果您有其他问题,请告诉我。