这是.c文件,后跟我的.h文件中的函数
#include <stdio.h>
#include "functions.h"
#define INPUT_FILE "C:/Users/user/Desktop/test.txt"
int main(){
FILE *text_file;
int num_characters, num_words, num_lines;
text_file = fopen(INPUT_FILE,"r");
if(text_file == NULL){
printf("!!-------ERROR OPENING FILE------!!\nclosing program....");
return 0;
}
num_characters = read_characters(text_file);
num_words = read_words(text_file);
num_lines = read_lines(text_file);
printf("Number of Characters: %d\nNumber of Words: %d\nNumber of Lines: %d\n",num_characters,num_words,num_lines);
return 0;
}
#include <stdio.h>
#include "functions.h"
#define INPUT_FILE "C:/Users/Lott-kerby/Desktop/test.txt"
#ifndef FUNCTIONS_H_
#define FUNCTIONS_H_
#include <stdio.h>
int read_characters(FILE *text_file){
int i;
int char_count = 0;
while((i = fgetc(text_file)) !=EOF)
char_count++;
return char_count;
}
int read_words(FILE *text_file){
char j;
int word_count = 0;
while((j = fgetc(text_file)) != EOF){
if(j == ' ')
word_count++;
}
return word_count;
}
int read_lines(FILE *text_file){
char k;
int line_count = 0;
while((k = fgetc(text_file)) != EOF){
if(k == '\n')
line_count++;
}
return line_count;
}
目标是找到文本文件中的字符数和行数。我跑的时候得到正确的字符数,但是得到的字数和行数不正确。我使用的文本文件如下:
word
word
word
用这个.txt我的程序输出是: 追捕者人数:14 NUmber的话:0 行数:0
任何帮助将不胜感激。 “单词”在我的文本文件中各自独立。
答案 0 :(得分:1)
你通过计算空格数来计算单词的数量,因为你假设每个单词之间都有一个空格。但在您的示例输入文件中没有空格。
所以你可能想要添加一个空格或新行的检查。
此外,您可能希望返回word_count + 1和line_count + 1,因为没有换行符的单行应返回1.对于没有空格的单个单词也是如此
编辑:oouuhh,现在我看到您多次读取文件而不重置文件指针,因此fgetc将始终立即返回read_words()和read_lines()中的EOF ...使用它重置它
rewind ( text_file );