如何在C中读取以空格分隔的0-9位数字?

用户名

我正在尝试制作一个程序,该程序读取C中以空格分隔的正数,并向任何其他格式的输入提供错误消息。

例如,以下输入正确:

0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
7 6 5 4 3
1 2 3
...

对于所有其他输入,程序应终止并且应显示一条错误消息。例如:

0 1,2 3 4-5 67 89
0123456789
0a2b3c4d5e6f7g8h9i
...

这是我的尝试:

...
int inputArr[999];
int length = 0;
char c = getchar();

while ( c != '\n' ) {
    if ( isdigit(c) ) {
        inputArr[length] = c - '0';
        length++;
    } else {
        printf ("Wrong Input Format!\n");
    }
    c = getchar();
    if ( c != ' ' ) {
        printf ("Wrong Input Format!\n");
    } else {
        continue;
    }
}
...

但是即使输入正确,这也会给出错误消息。

更新:

当我输入以下内容时:

0 1 2 3 4 5 6 7 8 9

我希望程序不会给我任何错误消息,但是我得到的恰好是10条错误消息(在删除该行之后exit(1);)。我假设这是1和(之后的9条消息)后每个字符的一条错误消息,最后是'\ n'字符的1条消息。

克瑞克(Kerrek SB)

试试这个:

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

void e() { puts("Bad input."); exit(EXIT_FAILURE); }

int main(void)
{
    for (int c1 = 0, c2 = 0; c1 != EOF && c2 != EOF; )
    {
        c1 = getchar();
        if (c1 == EOF || c1 == '\n') continue;   // file or line ends in "x "
        if (!isdigit(c1)) e();

        c2 = getchar();
        if (c2 != EOF && c2 != '\n' && c2 != ' ') e();

        printf("Got input: '%c'.\n", c1);
    }
}

此版本允许在行尾添加尾随空格。如果你希望允许尾随空格(即"1 2"是确定的,但"1 2 "一个错误),更改第一个条件:

if (c1 == EOF || c1 == '\n' || !isdigit(c1)) e();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在MySQL中处理128位数字

来自分类Dev

如何在android中显示2位数字的NumberPicker?

来自分类Dev

如何从32位数字中提取位

来自分类Dev

如何显示7位数字?

来自分类Dev

如何在C / C ++中最多计算1000位数字中的位数

来自分类Dev

如何在汇编中读取64位数字

来自分类Dev

检查给定的5位数字中的所有5位数字是否相同

来自分类Dev

如何在Java中旋转128位数字

来自分类Dev

在Java中获得7位数字

来自分类Dev

Java正则表达式从0-9连续查找最后一位数字,并且前6位数字相同

来自分类Dev

指向64位数字中的32位是否安全?

来自分类Dev

如何在python中创建4位数字的密码?

来自分类Dev

如何在逗号(。)后仅允许2位数字和1位数字?

来自分类Dev

如何使一位数字?

来自分类Dev

c#正则表达式包含“ 9位数字”并以“ 07”开头

来自分类Dev

Excel 2010-如何在数字前加上“ 0”使8位数字变为9位数字

来自分类Dev

如何从32位数字中提取位

来自分类Dev

如何在FreeSwitch中拨打10位数字的电话?

来自分类Dev

如何在Matlab中显示4位数字?

来自分类Dev

如何在C / C ++中最多计算1000位数字中的位数

来自分类Dev

如何在SAS中读取12位数字

来自分类Dev

如何仅使用正则表达式来限制文本框的文本长度为9位数字

来自分类Dev

C中32位数字的乘法

来自分类Dev

C#-不断添加9位数字

来自分类Dev

从日期中获取日期,并以1到9位数字追加0

来自分类Dev

比较Excel中的4位数字

来自分类Dev

在Arduino中获取char缓冲区的最后9位数字

来自分类Dev

32位系统中的16位数字处理

来自分类Dev

输入 0 - 9 的四位数字并生成四 (4) 位数字的新组合,

Related 相关文章

热门标签

归档