来自单个输入的多个scanf

时间:2016-10-21 23:09:55

标签: c

我试图提示用户输入一个号码,然后提取他们输入的号码,并将他们输入的号码的数字相加。他们只能输入一次号码。我的代码如下:

    printf("\nPART 2: EXPRESSIONS SUM\n\n");
    printf("Enter 5-digit integer: ");
    scanf("\n%1d%1d%1d%1d%1d", &dig_one, &dig_two, &dig_three, &dig_four, &dig_five);
    scanf("\n%d", &five_dig_int)

然而,在第一次扫描完成后,程序挂起第二个scanf等待更多输入。有没有办法重新扫描"所以说初始输入,所以用户不必再次输入数字?谢谢! ;

2 个答案:

答案 0 :(得分:0)

使用字符串&的atoi()

示例:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    char str[6];
    printf("\nPART 2: EXPRESSIONS SUM\n\n");
    printf("Enter 5-digit integer: ");
    scanf("\n%s, &str);
    int fivedigit = atoi(str);
    int sum = 0;
    for(int i = 0; i < 5; i++)
    {
        int tempadd = (int) str[i];
        sum += tempadd;
    }
    //Do stuff with both values



}

答案 1 :(得分:0)

用任何算术对任何整数的基数10位求和并不难:

#include <stdio.h>

int main(void) {
  int val;
  printf("Enter a number: ");
  if (scanf("%d", &val) != 1) return 1;
  int sum = 0;
  for (int x = val; x; x /= 10) sum += x % 10;
  printf("Value = %d. Digit sum = %d\n", val, sum);
  return 0;
}