私はmyf
という名前のファイルがあり、その中に多くのテキストがあり、単語の数を数える方法として空白を使用しようとしています。基本的には、私のプログラムのcountメソッドには、boolean関数のように動作する変数int dがあります。また、count
と呼ばれるインクリメンタがあります。ファイル内の単語数を数えようとしています
私はfor
ループを持っています。このループはメソッドcountの引数に入れられた配列をたどり、ポインタ*p
が非文字であるかどうかを確認します。それが非文字であり、d=0
の場合、d=1
とcount
がインクリメントされます。この方法では、次の文字も空白でない場合、d=1
以降、else if文は再びインクリメントされません。 dが0にリセットされる唯一の方法は、スペースが存在する場合です。その時点で、別の文字が見つかった場合は、それが再びインクリメントされます。メソッドcountは変数countを返します。シンプルだが、間違った数字が出てくる。
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#include <ctype.h>
int count(char x[]) {
int d = 0;
int count = 0;
for (char *p = x; *p != EOF; *p++) {
// this will traverse file
printf("%c", *p);
// this is just to see the output of the file
if (*p == ' ' && d == 1) {
d = 0;
}
else if (*p != ' ' && d == 0) {
count++;
d = 1;
}
}
return count;
}
int main() {
char c;
int r = 0;
char l[1000];
FILE *fp = fopen("myf", "r");
while ((c = fgetc(fp)) != EOF) {
l[r] = c;
r++;
}
printf("\n %d", count(l));
}
私はCとあまり慣れていないんだけど、あなただけの大きな長い文字列にあなたのファイルを読み込み、スペースにそれを分割して、 'array.Length'プロパティを取得することができますか? – Radmation
しかし、あなたの親友はコードフォーマッタです。合理的なインデントが単一の間隔であれば、本当に有益です。 –
これは単線でも動作しますが、60語のテキストを含むと、それは数えきれないほどです:/ – Bossrevz