C代码删除行

时间:2016-08-31 23:16:10

标签: c file io

我是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);
}

但这两个代码之间的实际差异是什么?

1 个答案:

答案 0 :(得分:8)

分配的优先级低于不等于,所以:

read_char = fgetc(fp) != '\n'

结果read_char获得01,这是将fgetc()电话与'\n'的结果进行比较的结果。

你需要括号:

 while((read_char = fgetc(fp)) != '\n')

会在与fgetc()比较之前将read_char结果分配给'\n'