首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在main()中调用的C函数不返回值

问在main()中调用的C函数不返回值
EN

Stack Overflow用户
提问于 2021-03-14 11:32:30
回答 1查看 63关注 0票数 1

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

终端输出

示例代码:

代码语言:javascript
复制
#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") != 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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-14 11:39:36

fgets()读取整行,因此getc()没有任何要读取的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66624007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档