我已经彻底搜索了我的问题的答案但没有取得多大成功。我希望有人可以帮助我。 我有一个简单的代码,从文件读取1行&计算字符数和数量那一行中的单词。我使用空格字符来确定新单词的开始时间和时间。 \ n确定行何时结束。
出于某种原因,从未检测到空格。程序进入无限循环。 如果我将缓冲区初始化为\ n,则会发生这种情况。如果我不这样做,即使没有检测到\ n。
提前致谢。
memset(&buf[0], '\n', sizeof(buf));
read(fd, &buf[0], sizeof(buf));
while(buf[i] != '\n') {
while(buf[i] != ' ') {
no_of_chars++;
i++;
}
no_of_words++;
i++;
}
我正在阅读的文件内容:“这是一个测试文件” 编译:GCC(Ubuntu)
答案 0 :(得分:2)
因为'\n' != ' '
当行结束时内部循环不会退出。检查内循环中的换行也应该修复它。
答案 1 :(得分:2)
有两个问题:
memset(&buf[0], '\n', sizeof(buf));
read(fd, &buf[0], sizeof(buf) - 1); /* else read could overwrite all your line feed chars */
while(buf[i] != '\n') {
while(buf[i] != ' ' && buf[i] != '\n') { /* else the inner while skips line feed chars */
no_of_chars++;
i++;
}
no_of_words++;
i++;
}