[英]How do I count the number of words in a text file using C?
我需要一些帮助,我正在为我的系统编程课程编写一个程序。 它是用 C 语言编写的,我对 C 语言的经验非常非常少。我需要将三个文本文件与以下格式合并:
word1
word2
word3
...
wordX
我还将把所有三个文件中的每个单词都带入一个二维数组(字符串数组的数组)中,然后对它们使用某种排序方法。
我不应该在排序方面需要帮助,但我不知道如何从每个文本文件中获取字数或将它们放入数组中。
这是我用于计算文件中单词的功能。 它不能在gcc
上编译(可能出于明显的原因,但我不知道)。 我什至有正确的想法吗?
int countWords(FILE f){
int count = 0;
char ch;
while ((ch = fgetc(f)) != EOF){
if (ch == '\n')
count++;
//return count; originally here, but shouldn't be.
}
return count;
}
编辑:我想我可以找到一种方法来计算程序中的行数,但我不确定这种方法是否与我在这里尝试做的有什么不同。 (我从来没有真正擅长处理文本文件。
我得到它来计算程序中的所有行。 我想我有点生疏了。
#include <stdlib.h>
#include <stdio.h>
int countWords(FILE *f){
int count = 0;
char ch;
while ((ch = fgetc(f)) != EOF){
if (ch == '\n')
count++;
}
return count;
}
int main(void){
int wordCount = 0;
FILE *rFile = fopen("american0.txt", "r");
wordCount += countWords(rFile);
printf("%d", wordCount);
return 0;
}
我有点忘记了FILE *fileName
的指针
它应该是int countWords(FILE *f){
,带有*
。 并且return
语句应该只在最后一个}
之前,在循环之外。
您在 c 中用于文件的类型是FILE*
。 那颗星很重要,表明该类型是“指向文件的指针”。 countWords(FILE f)
不太可能是您要编写的内容。
每次调用函数时,它都会有一个新的count = 0
,所以它总是返回 0 或 1。尝试使用static int count;
,使 count 成为全局变量,或将当前计数传递给函数。 您的另一个选择是移动return count;
在while
循环之外的行。
您可能还需要使用您发布的格式将计数除以 2 以获得单词数。
这是代码。 刚才看了几个空格,就知道了。
#include<stdio.h>
#define FILE_READ "file.txt"
int main()
{
FILE * filp;
int count = 1;
char c;
filp = fopen(FILE_READ, "r");
if(filp == NULL)
printf("file not found\n");
while((c = fgetc(filp)) != EOF) {
if(c == ' ')
count++;
}
printf("worrds = %d\n", count);
return 0;
}
文本文件
I am megharaj, from india.
输出,
worrds = 5
这是我的 uni 书中的代码
#include <stdio.h>
int main(void){
FILE *f = fopen("file.txt", "r");
int count = 0, word=0;
char ch;
while ((ch = fgetc(f)) != EOF){
if (ch == ' ' || ch == '\n') {
word = 0;
} else {
if(!word){
count++;
word = 1;
}
}
}
printf("%d", count);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.