我是C菜鸟,我正在尝试制作删除特定行的程序。为此,我选择复制源文件的内容,跳过要删除的行。在我的原始代码中,我写道:
while(read_char = fgetc(fp) != '\n') //code to move the cursor position to end of line
{
printf("%c",read_char); //temporary code to see the skipped characters
}
给了我很多笑脸。
最后,我找到了给出预期输出的代码:
read_char=fgetc(fp);
while(read_char != '\n') //code to move the cursor position to end of line
{
printf("%c",read_char); //temporary code to see the skipped characters
read_char=fgetc(fp);
}
但这两个代码之间的实际差异是什么?
答案 0 :(得分:8)
分配的优先级低于不等于,所以:
read_char = fgetc(fp) != '\n'
结果read_char
获得0
或1
,这是将fgetc()
电话与'\n'
的结果进行比较的结果。
你需要括号:
while((read_char = fgetc(fp)) != '\n')
会在与fgetc()
比较之前将read_char
结果分配给'\n'
。