我的计数字符、单词、行数程序有什么问题?
What's wrong with my count characters, words, lines program?
尝试编写一个 C 程序:
计算在到达 EOF 之前从标准输入读取的字符数、单词数和行数。
假设输入是任意长度的 ASCII 文本。
单词被定义为连续的字母序列(a 到 z,A 到 Z)和撇号(',十进制值 39),由这些范围之外的任何字符分隔。
行定义为由换行符 ('\n') 分隔的连续字符序列。
最后一个换行符之后的字符将不计入行数。
我写了以下内容,它可以很好地计算字符数,但不计算任何单词或行数。我不明白为什么。
#include <stdio.h>
int main() {
unsigned long int countchar=0;
unsigned long int word=0;
unsigned long int line=0;
int c;
while (((c=getchar())!=EOF)) {
countchar++;
if ((c>='A' && c<= 'Z') || (c>='a' && c<= 'z') || (c==39)) {
word++;
}
else if (c=='\n') {
line++;
}
}
printf("%lu %lu %lu\n", countchar, word, line);
return 0;
}
char 是保留字。您不能将变量命名为。
while ((c=getchar()!=EOF)) {
应该是
while (((c=getchar())!=EOF)) {
否则会被解释为
while ((c=(getchar())!=EOF))) {
您将单词中的每个字母都算作一个单词。
它应该可以更改它以检查它不是单词中的任何字母并删除其他字母。
您可能需要添加一些额外的检查,以便仅在最后一个字母在单词中时才增加单词。
if (!((c>='A' && c<= 'Z') || (c>='a' && c<= 'z') || (c==39)) {
word++;
}
if (c=='\n') {
line++;
}
尝试编写一个 C 程序:
计算在到达 EOF 之前从标准输入读取的字符数、单词数和行数。 假设输入是任意长度的 ASCII 文本。 单词被定义为连续的字母序列(a 到 z,A 到 Z)和撇号(',十进制值 39),由这些范围之外的任何字符分隔。 行定义为由换行符 ('\n') 分隔的连续字符序列。 最后一个换行符之后的字符将不计入行数。
我写了以下内容,它可以很好地计算字符数,但不计算任何单词或行数。我不明白为什么。
#include <stdio.h>
int main() {
unsigned long int countchar=0;
unsigned long int word=0;
unsigned long int line=0;
int c;
while (((c=getchar())!=EOF)) {
countchar++;
if ((c>='A' && c<= 'Z') || (c>='a' && c<= 'z') || (c==39)) {
word++;
}
else if (c=='\n') {
line++;
}
}
printf("%lu %lu %lu\n", countchar, word, line);
return 0;
}
char 是保留字。您不能将变量命名为。
while ((c=getchar()!=EOF)) {
应该是
while (((c=getchar())!=EOF)) {
否则会被解释为
while ((c=(getchar())!=EOF))) {
您将单词中的每个字母都算作一个单词。 它应该可以更改它以检查它不是单词中的任何字母并删除其他字母。 您可能需要添加一些额外的检查,以便仅在最后一个字母在单词中时才增加单词。
if (!((c>='A' && c<= 'Z') || (c>='a' && c<= 'z') || (c==39)) {
word++;
}
if (c=='\n') {
line++;
}