C:当一次使用scanf一个char时,如何在从键盘或文件输入结束时停止循环

时间:2018-05-14 20:05:54

标签: c scanf

void main(void)
{
    char character;

    do {
        scanf("%c", &character);
        printf("%c", character);
    } while (character != EOF);
}

我将按字符处理输入字符,我只允许使用scanf()。但是,while循环不会停止。由于我可能需要使用多行字符串处理输入,因此无法再添加一个条件:character!='\ n'。 有人可以帮我解决这个问题吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您的期望不正确。当EOF在匹配输入项或识别匹配失败之前遇到输入的结尾时,返回 scanf。在任何情况下都不会修改与未匹配的输入项关联的数据的值。

您忽略了scanf的返回值,这通常是一件危险的事情,而是测试EOF是否在与输入项关联的对象中记录$('#submit_c').click(function (e) { var form = $('#form32_c'); // prevent default action e.preventDefault(); // send ajax request $.ajax({ url: '/js-calls/post.php', type: 'POST', cache: false, data: form.serialize(), success: function(data){ $('#back').hide(); } }); }); , ,在您的特定情况下,它不能永远做。

答案 1 :(得分:1)

首先应该是int main...

您还需要检查scanf的返回值 - 请阅读手册页。

考虑到这一点,代码看起来应该是这样的

#include <stdlib.h>
#include <stdio.h>
int main()
{
    char character;

    while (scanf("%c", &character) == 1) {
       if (character != '\n) {
         printf("%c", character)
       }
    }
    return EXIT_SUCCESS;
}