我在计算 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/