字符存储在整数的位置

时间:2018-01-27 15:16:21

标签: c struct scanf

存储字符代替整数

    /* C program to find strong number using Structure and Pointers*/

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

struct strg {
    long int a;
}*strgvar;

int strong(int);

int main() {
    int result;
    strgvar = (struct strg*) malloc(sizeof(struct strg));
    printf("Enter the number ...\n");
    scanf("%ld", &strgvar -> a);
    result = strong(strgvar -> a);
    if(result == strgvar->a) {
        printf("Its a strong number !");
    }
    else {
        printf("Its not a strong number !");
    }
    return 0;
}   

int strong (int a) {
    int fact, r, n, sum = 0;
    while(a != 0) {
        r = r % 10;
        for(int i =0; i <= r; i++) {
            fact = fact * i;
        }
        sum = sum + fact;
        n = n/ 10;
    }
    return sum;
}

在运行此程序时,输入整数不存储在变量中。但在输入任何字符时,它会打印“它是一个强大的数字!”

示例:

  

案例1:

     

输入数字...... 234

     

2

     

178

     

ER

     

fg yu8。案例2:输入数字... e

这是一个很强的数字!

1 个答案:

答案 0 :(得分:1)

strong中的循环显然是无限的,除非a==0开始。如果scanf失败,则strgvar->a未初始化,因此您的程序具有未定义的行为。一个“合理”的可能性是该值被读为0,从而产生观察结果。