使用数组整数

时间:2014-06-09 13:52:16

标签: c arrays

我是C编程语言的新手。
我需要单独输入用户输入的每个数字。
这是我的代码:

#include <stdio.h>

int main()
{
    int n[100];
    printf("Enter a number: ");
    scanf("%d",&n);
    printf("%d %d %d",n[1],n[2],n[3]);

   return 0;
} //i know that my code is not assigning like i want.

现在例如用户输入的数字如123,我想要输出1 2 3,我如何将每个数字分配到n[i]
不使用string到int或int到atoi之类的字符串?
以下是我将要做的事情:
用户将输入一个数字,程序将从行100x100中的行或列中搜索。我想我需要分别得到每一个数字来搜索。

2 个答案:

答案 0 :(得分:3)

无需转到字符数组。可以使用n计算数字n%10的位数。然后,您可以使用n /= 10删除最后一位数字。所以这个循环会以相反的顺序打印数字:

void print_rev_digits(int n) {
  while (n) {
    printf("%d\n", n%10); 
    n /= 10;
  }
}

使用堆栈,您可以按正确的顺序打印数字。您也可以使用递归(它将为您使用堆栈)。我故意不发布完整的解决方案。

答案 1 :(得分:0)

在这种情况下,您应该逐个阅读用户输入字符:

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

int main()
{
    char input[100];
    int n[100];
    printf("Enter a number: ");
    if (fgets(input, sizeof(input), stdin)) { // attempt to read a line
        int i;
        for (i = 0; input[i]; i++) { // for each entered character
            if (input[i] >= '0' && input[i] <= '9') { // is a digit
                n[i] = input[i] - '0';
                printf("%d ", input[i] - '0');
            } 
            else if (isspace(input[i])) // end of entered integer
                break;
            else {
                printf(stderr, "Input is not a number\n");
                return -1;
            }
        }
        printf("\n");
    } else {
        fprintf(stderr, "User did not enter valid input.\n");
    }

   return 0;
}