如何解决在 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",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") != 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() 没有什么可读取的了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。