请解释这个C代码

时间:2012-09-27 17:23:26

标签: c validation integer

我为这个代码练习做了部分代码,代码正在运行,但我并不真正理解特定部分中发生的事情。

任何人都可以解释这一部分:

if(scanf("%d%c", &num1, &term1) != 2 || term1 != '\n'){

    printf("ERROR! You should type an integer e.g 5, 80, 100\n");

} else { ....

完整的代码是:

#include <stdio.h>

int main(){

int num1,num2;

char term1,term2;

printf("Type your first integer\n");

if(scanf("%d%c", &num1, &term1) != 2 || term1 != '\n'){

    printf("ERROR! You should type an integer e.g 5, 80, 100\n");

} else {

    printf("Type your second integer\n");

    if (scanf("%d%c", &num2, &term2) != 2 || term1 != '\n'){

        printf("ERROR! You should type an integer e.g 5, 80, 100\n");

    } 

    printf("\n%d", num1);
    for (int i=0; i<num1; i++) {
        printf(" *");
    }

    printf("\n");

    printf("%d", num2);
    for (int j=0; j<num2; j++) {
        printf(" *");
    }
}
}

练习是让程序请求2个整数值并使用这两个值制作水平条形图。

感谢。

1 个答案:

答案 0 :(得分:3)

scanf()返回成功收到的字词数。你要求两个术语,所以你要比较结果以确保两者都被收到。然后,您要检查字符术语以确保它是回车符,因此您知道用户在输入数字术语后没有键入任何其他文本。

我非常赞同@ Vlad关于阅读文档的评论。如果您在没有任何实际努力的情况下自行解决问题的帮助,那么当您遇到更复杂的事情时,您就注定要失败。