c - C 语言字数统计?

标签 c count std words

我在计算 std 中的单词数时遇到问题。当我计算文件中的单词数时,我使用相同的方法,效果很好。 我的方法如下:我们读到ctrl+d。如果下一个字符是换行符,则增加 new_lines。否则,我们会增加单词,因为下一个方法(最后一个 if)直到第一个空格才会读取,并且我丢失了第一个单词。最后如果当前字符是空格并且下一个元素不是空格,则增加单词。

现在我要解释一下问题。如果我有空行程序,则增加单词,但为什么我为此使用第二个 if 。如果我没有空行程序就可以工作。

int status_read=1;

while (status_read > 0){ // read to end of file

   status_read = read(STDOUT_FILENO, buff, 9999);   // read from std    
        for (i = 0; i < status_read ; i++) { // until i<status_read 
            if (buff[i] == '\n') { 
                new_lines++;
                if (buff[i+1]!='\n')  
                    wordcounter++;  
             }  
            if (buff[i] == ' ' && buff[i+1]!=' ') 
                    wordcounter++;  
        }   
    }

最佳答案

正如@FredLarson评论的那样,您正在尝试从标准out读取,而不是标准in(也就是说,您应该使用STDIN_FILENO ,而不是STDOUT_FILENO)。

关于c - C 语言字数统计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27987766/

相关文章:

c - 在 C 中从管道写入和读取整数

c - 为什么没有无符号最小值?

sql - 在 postgres 中实现用户定义的 c 函数

hadoop - hive -标签计数

c++ - 通过 std::ifstream 从字符串中获取每个值

c++ - 在 std::vector 中使用类对象

c++ - 从进程加载的 DLL 调用另一个进程中的方法

java计算重复的键值对?

c# - 带有 2 的 Linq 语句加入了一个 where 并且需要一个计数

用于 xCode 错误的 C++11