用户输入和fgets

时间:2015-12-16 20:17:51

标签: c fgets

我必须接受用户输入并将其写入文件,我正在使用fgets()来防止溢出:

while (fgets( line, sizeof line, stdin) != NULL)
    fputs(line, file);

这个问题是用户必须在空行上输入CTRL + Z然后提交它以退出输入,这可能看起来有点令人困惑。是否有更简单的方法退出fgets()输入?

其他方法怎么样?如果我逐个符号地读取,我可以实现一个退出字符,但是用户不能删除输入,这也令人困惑,所以我必须实现删除算法,这会给代码增加一点太多的复杂性。

编辑: 用户必须能够在尽可能少的限制下在终端中输入C代码。

1 个答案:

答案 0 :(得分:2)

为什么不使用输入值本身来实现检查?这样,您就不需要任何特殊实现来标记输入的结束。

详细说明,如果要使用空行标记输入的结尾,可以检查输入缓冲区的第一个元素是否等于换行符以实现break条件,如

    while (fgets( line, sizeof line, stdin) != NULL)
    {
            if (line[0] == '\n')
            {
                    printf("end\n");
                    break;
            }
               fputs(line, file);
    }

编辑:如果您想要实现自己的输入结束标记,可以使用该特定标记与第一个元素进行比较(或者,如果它是一个多字母标记,可能是strcmp()输入)来实现break