在main()中调用的C函数没有返回值



我正在编写一个C程序,该程序具有多个函数,可读取文本文件并返回行数,空白行,注释等。然而,当我在main()中调用多个函数时,只有第一个被调用的函数返回其值。其他函数返回- 0。为什么?调用函数的正确方法是什么?

终端输出

示例代码:

#include  <stdio.h>
#include  <string.h>
#include  <stdlib.h>
int non_blank_lines(FILE *input);
int all_lines(FILE *input);
main (int argc , char **argv)
{
char file_name[40];

//prompting a user to enter a file name
printf("Please enter a file name: ");
scanf("%s", file_name);

//opening and reading the file
FILE *input = fopen(file_name, "r");

//check if the entered file exists
if (input == NULL) 
{ 
printf("File %s does not exist!", file_name); 
return 0; 
} 
//calling the functions and printing the output
printf("The file %s has %d filled lines.n", file_name, non_blank_lines(input));
printf("The file %s has in total %d lines.n", file_name, all_lines(input));


fclose(input);
return 0;
}
int non_blank_lines(FILE *input)
{
int count = 0;
char line[100];
while(fgets(line, 100, input) != NULL)
{
if(strcmp(line, "") != 0 && strcmp(line, "t") != 0 && strcmp(line, "n") != 0)

count = count + 1;
}
return count;
}
int all_lines(FILE *input)
{
//searching for a new line character to count number of lines in a file
int line_count = 0;
char character;
while((character = getc(input)) !=EOF)
{
if (character == 'n')
line_count = line_count + 1;  
}

return line_count;
}

fgets()读取整行,因此没有任何东西留给getc()读取。

最新更新