【发布时间】:2015-02-26 01:11:44
【问题描述】:
目标基本上是重新创建wc。我需要计算单词、字符、非空白字符和换行符。我什么都有,除了我不知道如何使它工作的单词。
当我在这里搜索时,每个人都假设文档在单词之间没有多个空格。我必须测试的文档保证有多个空格,因此这种计算单词的方法不起作用。
#include <stdio.h>
int main (int argc, char* argv[]) {
int Spaces;
Spaces = 0;
int NewLine;
NewLine = 0;
int Characters;
Characters = -1;
char* filename = argv[1];
if (argc < 2) {
printf("Usage: \n wc <filename>\n");
} else {
printf("Filename is: %s\n", filename );
FILE* infile;
infile = fopen(filename, "r");
char c;
do {
if (c == ' ') {
Spaces = Spaces + 1;
}
if (c == '\n') {
NewLine = NewLine + 1;
}
Characters = Characters + 1;
} while ((c = fgetc(infile)) != EOF);
printf("Total number of characters: %d\n", Characters);
Characters = Characters - NewLine - Spaces;
printf("Total number of non-whitespace characters: %d\n", Characters);
printf("Total number of lines: %d\n", NewLine);
}
return 0;
}
【问题讨论】:
-
这并不能解决您所询问的问题,但您应该将
do/while循环更改为普通的while循环并将c更改为@987654328 @. -
c未初始化。 (以及更多) -
注意:
char c;-->int c;将EOF与所有其他char区分开来。 -
This 是我在另一个主题上提出的问题,但那里的代码可能被证明是有用的。
标签: c