如何输入没有空格的整数数组或' \ n'?

时间:2014-04-09 08:15:45

标签: c

我想输入一个整数数组而不给出空格。

例如: - 032146548,每个整数应该清楚地存储在数组中,

i.e a[0]=0,a[1]=3,a[2]=2 and so on.

我该怎么做?

3 个答案:

答案 0 :(得分:1)

我认为说“每个数字”更清楚,因为一旦你知道它应该是什么,字符序列032146548代表多少“整数”(通常的做法是“一个”)并不明显几个。

最简单的方法是将其作为一串数字读取,然后通过减去'0'将每个数字转换为整数数字:

char line[12];
unsigned int a[10];
if(fgets(line, sizeof line, stdin) != NULL)
{
  const size_t digits = strlen(line) - 1;
  for(size_t i = 0; i < sizeof a; ++i)
  {
    if(i < digits && isdigit((unsigned int) line[i]))
       a[i] = line[i] - '0';
    else
       a[i] = 0;
  }
}

答案 1 :(得分:0)

如果您正在阅读文件

,请使用此选项
int i=0;
while(scanf("%1d",&a[i])==1)
{
     i++;
}

如果您知道有多少输入,请使用此

for(int i=0;i<inputLength;i++)
{
    scanf("%1d",&a[i]);
}

答案 2 :(得分:0)

#include <stdio.h>

int main(){
    int a[16];
    int i, j, stat;
    char ch[2] ={0};

    for(i=0;i<16;++i){
        if(1!=(stat=scanf("%1d%1[^0-9]", &a[i], ch))){
            if(stat==2)
                ++i;
            break;
        }
    }
    for(j=0;j<i;++j)
        printf("%d ", a[j]);
    printf("\n");
    return 0;
}