测试char变量

时间:2017-09-30 07:09:22

标签: c

我无法找到如何设置循环,然后输入输入 按'e'或'E'停止输入。输入的输入是整数,但需要使用字符停止。那是我迷路的地方。我已经看到了一些关于使用ascii转换的信息,但我不知道它会有多高效。这段代码被打破了,但它是我能得到的。任何信息都会有所帮助。

int main(void)
{
    char num;
    int sub;

    while (sub != 'e' || sub != 'E') {
        scanf("%d", &num);
        sub = #
        printf("%d", num);
    }

    return 0;
}

3 个答案:

答案 0 :(得分:0)

简单。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char c = getchar();
    int num;

    while (c != 'e' || c != 'E') {
         if (isdigit(c))
              num = c - '0';
         c = getchar();
    }
    return 0;
}

但是你不必使用ascii字符作为停止输入的方法。您可以使用-1的EOF。它是UNIX系统上的Ctrl-D和Windows上的Ctrl-Z。     int c;     while((c = getchar())!= EOF)

答案 1 :(得分:0)

区分int'e''E'输入的直接方法是使用{{1}读取用户输入的然后解析它。

fgets()

答案 2 :(得分:0)

如评论中所述,(sub != 'e' || sub != 'E')始终如此。如果sub永远不能同时为eE

请注意,subint而不是整数指针(int *)。 sub = &num;行为sub分配了num的地址。

sub的值在while循环初始化之前用于控制表达式。 sub在该点具有垃圾值,这是不确定的。在使用它之前,你必须使用一些值来使它失去活力。

待办事项

int num, rv;
while( 1 )
{
    rv=scanf("%d", &num);
    if(rv==0)
    {
        if( (num=getchar())=='e' || num=='E' )
        {
            break;
        }
        else
        {
            while(getchar()!='\n');
            continue;
        }
    }
    printf("\n%d", num);
}

numscanf()的值读入rv,其返回值存储在scanf()中。

1返回成功分配的数量,在这种情况下,如果将整数值读入num,则%d应为rv,因为1是格式说明符。

如果scanf()getchar(),则为数字并打印。否则它可能是e无法读取的字符,并且在输入缓冲区中仍然未被消耗。 E读取此数据的第一个字节,如果是\nlength,则退出循环,否则清除输入缓冲区直到var array = [1, 3, 8], i; for (i = 0; i < array.length; i++) { console.log(array[i]); if (i === 0) { array.push(10, 20); } }e遇到了循环的下一次迭代,而没有进入打印的部分。