【发布时间】:2020-09-04 21:24:50
【问题描述】:
我很难在我的代码中找到一个错误,结果是我在一个 while 循环中错过了一对括号,我仍然不知道它的重要性。
那么为什么这些行彼此不同:
while (( (bytes_read = read(inputFILE, buffer, BUFF_SIZE)) > 0))
while (( bytes_read = read(inputFILE, buffer, BUFF_SIZE) > 0))
第二行是导致当我尝试将缓冲区写入文件时,无论如何只写入一个字符的错误。这对额外的括号做了什么改变
行正确的整个循环是:
while (( (bytes_read = read(inputFILE, buffer, BUFF_SIZE)) > 0)){
bytes_write = write(outputFILE, buffer, bytes_read);
if (bytes_write != bytes_read)
fatal("Couldnt write data to %s", argv[2]);
【问题讨论】:
-
这两行代码都有一组额外的括号。应该删除额外的一组括号,因为额外的括号组会禁用编译器为检测此类错误所做的检查。
标签: c while-loop operators