Кажется, я правильно понял строки, символы и пробелы. Однако мне сложно понять, как считать слова. Они не должны быть в форме словаря; например, fdasf fdjsak fea
будет три слова.Подсчет слов в программе подсчета слов из имени файла
Это то, что у меня есть:
#include <stdio.h>
int main(int argc, char* argv[]) {
int ccount = 0;
int wcount = 1;
int lcount = 0;
int scount = 0;
char* filename = argv[1];
printf("filename is: %s\n", filename);
FILE* infile;
infile = fopen(filename, "r");
if (infile == NULL) {
printf("%s: is not a valid file\n", filename);
return -1;
}
char c;
while ((c = fgetc(infile)) != EOF) {
if (c == ' ') {
wcount++;
}
if (c == '\n') {
lcount++;
}
if (c != ' ' || c != '\n') {
ccount++;
}
if (c == ' ') {
scount ++;
}
}
printf("total number of lines: %d\n", lcount);
printf("total number of characters: %d \n", ccount);
printf("total number of non-whitespace characters: %d \n", scount);
printf("total number of words: %d \n", wcount);
return 0;
}
после того, как вы определили, как вы определяете слово (например, последовательность букв нижнего и верхнего регистра, а также букву верхнего и нижнего регистра, за которой следуют все строчные буквы, буквенно-цифровые, ...), проверьте, соответствует ли текущий символ шаблону или нет. Переходы состояния согласования шаблонов указывают начало/конец слова. Подсчитайте количество пар начала/конца. – SleuthEye
Об этом много раз ответили на SO. предлагают провести немного исследований. – user3629249
'words per-line = #whitespace_breaks + 1' и помните, что вам нужно рассматривать любую последовательность пробельных символов' space, tab и т. Д. '(Или их кратность) как единый whitespace_break с целью вычисления количества слова. –