2016-10-21 6 views
0

ユーザーに番号を入力し、入力した番号を抽出し、入力した番号の桁を合計しようとしています。彼らは一度だけ番号を入力することができます。私のコードは以下の通りです: 1つの入力からの複数のscanf

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が完了した後、プログラムは、複数の入力を待っている第二のscanfに掛けます。最初の入力を話すように「スキャンする」方法があるので、ユーザーは再度番号を入力する必要はありませんか?ありがとう! ;

+1

することができます'fgets'や多分' scanf'を使って、文字列としてユーザの入力を全体の行として読み込み、 'sscanf'を複数回使ってその文字列をさまざまな方法でスキャンします。興味深いことに、私はそれを試してみましょう。 –

+1

ですから、scanfだけを使ってそれを行う方法がないように見えますか?一度それを使用した後、入力は話すために「食べる」。 – Froobyflake

+0

また、数字を取得するscanfを保持しておき、文字列に連結して5桁の整数に変換することはできますか?もし私がそのルートに行きたいなら、私はそれをどうしたらいいですか? – Froobyflake

答えて

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 



} 
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; 
} 
関連する問題