计算给定文本文件中每个长度的单词数。 单词是除空格和行尾以外的任何符号的任何子串。作为单词的子字符串必须以空格,行尾或文件尾为界。
我不明白为什么我的程序在哪里以及什么地方不起作用。在我们的自动测试系统中,下面的程序通过了20个测试中的8个(您看不到这些测试)。
输出必须为:
单词长度-文本中该长度的单词数
每个换行符按升序排列。如果此长度的单词数为零,则无需打印。输出必须写入文件。
#include <stdio.h>
long int c[99999];
int main() {
FILE *input;
input = fopen("input.txt", "r");
FILE *output;
output = fopen("output.txt", "w");
char state = 0;
int s;
long int l = 0;
for (s = fgetc(input); (s != EOF); s = fgetc(input)) {
if (((s == '\n') || (s == '\0') || (s == ' ')) && (state == 1)) { c[l]++; l = 0; state = 0; }
if (!((s == '\n') || (s == '\0') || (s == ' ')) && (state == 1)) l++;
if (!((s == '\n') || (s == '\0') || (s == ' ')) && (state == 0)) {state = 1; l++;}
}
if ((s == EOF) && (state == 1)) c[l]++;
for (int i = 1; i < 99999; i++) if (c[i] > 0) fprintf(output, "%d - %d\n", i, c[i]);
fclose(input);
fclose(output);
return 0;
}