C字符串:\ n& ' ' 没有检测到

时间:2012-03-13 01:21:45

标签: c++ c

我已经彻底搜索了我的问题的答案但没有取得多大成功。我希望有人可以帮助我。 我有一个简单的代码,从文件读取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)

2 个答案:

答案 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++;
}