以下是规格。
从stdin读取的每个字节都计为除EOF之外的字符。单词被定义为连续的字母序列(a到z,A到Z)和由这些范围之外的任何字符分隔的撇号(',十进制值39)。 行被定义为由换行符分隔的连续字符序列(' \ n')。 最终换行符之外的字符不会包含在行数中。
我的代码似乎适用于简单的输入,但是当我尝试输入一个由空行分隔的多个段落的大文件时,我的数字会被丢弃,字数和字符太高。
到目前为止我已经
了#include <stdio.h>
int main(){
char ch;
unsigned int long linecount, wordcount, charcount;
int u;
linecount=0;
wordcount=0;
charcount=0;
while((ch=getc(stdin))!=EOF){
if (ch !='\n') {++charcount;}
if (ch==' ' || ch=='\n') {++wordcount;}
if (ch=='\n') {++linecount;}
}
if(charcount>0){
++wordcount;
++linecount;
}
printf( "%lu %lu %lu\n", charcount, wordcount, linecount );
return 0;
}
答案 0 :(得分:-1)
当您遇到空行时,您会连续两次看到\n
。查找这些事件,每次看到它们时,将字数减1。