我需要一些帮助,我正在为我的系统编程课程编写一个程序。它在C中,我对C的经验非常非常少。我需要将三个文本文件合并为以下格式:
word1
word2
word3
...
wordX
我还要将所有三个文件中的每个单词都放入一个2D数组(一个字符串数组的数组)中,然后对它们使用某种排序方法。
我不需要排序方面的帮助,但我不知道如何从每个文本文件中获取字数或将它们放入数组中。
这是我用来计算文件中单词的函数。它不能在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;
}
圣牛。我得到它来计算程序中的所有行。我想我有点生疏了:P
#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的指针事物
感谢帮助人员。
答案 0 :(得分:2)
应为int countWords(FILE *f){
,*
。并且return
语句应该在循环之外的最后一个}
之前。
答案 1 :(得分:2)
您在c中使用的文件类型为FILE*
。那颗星很重要,表明该类型是“FILE指针”。 countWords(FILE f)
不太可能是您的意思。
每次调用函数时,它都会有一个新的count = 0
,因此它将始终返回0或1.尝试使用static int count;
,使计数成为全局变量,或传递当前计数到功能。您的另一个选择是将return count;
行移到while
循环之外。
您可能还需要将计数除以2,以使用您发布的格式获取字数。
答案 2 :(得分:0)
这是代码。只需读取空格数即可。
#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