【发布时间】:2016-01-13 18:44:27
【问题描述】:
所以我想知道这是否正确;我必须计算文件中超过一行的 cmets:
void commentsLongerThanOneLine(FILE* inputStream, FILE* outputStream) {
char c;
int i = 0;
while ((c = fgetc(inputStream) != EOF)) {
if (c == '/' && '*' && '\n') i++;
}
printf("Number of comments longer than one line is : %d\n", i);
return 0;
}
【问题讨论】:
-
首先您需要了解条件及其工作原理。并了解分配
=和相等比较==之间的区别。 -
c='/' && '*'到底是什么?这根本没有意义。您正在尝试将c与多个值进行比较,但它不会那样工作。 -
这比你想象的要复杂。注释指示符可能在文字字符串中,
//样式可能被更重要的/* comment */注释掉 -
&& 表示布尔值并且相等性的测试是 == 不是 =,即使该行按照您的想法工作,它也总是错误的,因为您似乎测试 c 与斜杠和星号和新行这是不可能的。您需要检查斜杠设置标志并检查下一个字符是否为星号然后验证注释结束前是否有新行(*/)另请参阅下面的注释关于//如何跨越多行并检查/* 不在 // 内
-
不要忘记
//comment如果包含续行符号 `\` 可以跨越多行(尽管 MSVC 会针对此类注释给出警告)。
标签: c filesystems comments