C:计算`new line`直到达到双倍空格

时间:2012-11-25 04:11:12

标签: c scanf fgetc

基本上我试图从类似

的文件中读取数据的“块”
000000000
000000001
000100000
100000000

000000000
000000000
000000000  

以上示例将转换为两个数据块。第一个是4行高,第二个是3行高。

双空格分隔“”。

这是我的代码,直到遇到双倍空格。 (这会读取第一个循环,然后我使用fseek来读取我想要读取的任何其他块 - 尽管这个问题并不重要但是

while(!endofblock){
  firstchar = fgetc(fptr); //read the first character
    if(firstchar == '\n'){ 
       if(fgetc(fptr) == '\n'){ //if its newline AND newline
          endofblock = 1; //end of block is reached, loops break
       }else{  //if its just one new line
          *h = *h + 1; //increment h (height), a pointer passed from elsewhere
       }
    }

  if(feof(fptr)){ 
    endofblock = 1; 
  }
}

这在大多数情况下都可以正常工作 - 但是有一些复杂的无法解释的情况它不起作用。此外,它非常臃肿和混乱。

是否有更整洁,更好的方法来计算new line的数量,并在达到double new line时停止计算?

1 个答案:

答案 0 :(得分:0)

使用getline功能:

char *line = NULL;
size_t linecap = 0;
ssize_t linelen;

while ((linelen = getline(&line, &linecap, fp)) > 0) {
    if (line[0] == '\n') {
        // block ended
    }
}

free(line);