在C中的文件中查找最长的注释行

时间:2015-01-16 19:02:56

标签: c

所以我有这个功能来找到文件中最长的一行:

int LongestLine(FILE *filename) {

  char buf[MAX_LINE_LENGTH] = {0};

  char line_val[MAX_LINE_LENGTH] = {0};
  int line_len = -1;
  int line_num = -1;
  int cur_line = 1;

  filename = fopen(filename, "r");

  while(fgets(buf, MAX_LINE_LENGTH, filename) != NULL) {
    int len_tmp = strlen(buf) - 1;

    if(buf[len_tmp] == '\n')
      buf[len_tmp] = '\0';

    if(line_len < len_tmp) {
      strncpy(line_val, buf, len_tmp + 1);
      line_len = len_tmp;
      line_num = cur_line;
    }

    cur_line++;
  }

  return line_num;
}

我想把它与这个结合起来:

bool startsWith(const char *pre, const char *str)
{
    size_t lenpre = strlen(pre),
           lenstr = strlen(str);
    return lenstr < lenpre ? false : strncmp(pre, str, lenpre) == 0;
}

但是.. LongestLine()函数返回一个整数。那么我怎样才能使用这两个函数,这样我才能找到最开始的行,让我们说//

1 个答案:

答案 0 :(得分:1)

startsWith语句中添加对if的调用(以查看它是否为评论),以确定某条新行是否为最长行:

if( startsWith("//",buf) && (line_len < len_tmp) ) {