Reputation: 15
I am working on a C program with multiple functions that reads in text files and returns the count of lines, blank lines, comments, etc. However, when I call multiple functions in main() only the first function called returns its value. The other functions return - 0. Why? What is the correct way to call the functions?
Example code:
#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;
}
Upvotes: 1
Views: 69
Reputation:
fgets() reads the entire line, so there is nothing left for getc() to read.
Upvotes: 1