如何根据用户输入打印不同的东西?

时间:2018-04-13 01:51:48

标签: c scanf

首先,如果问题没有意义,我道歉,因为我的英语不太好......

我的问题是,我们如何根据用户输入打印出不同的内容? 我要做的是:当用户输入整数时,程序打印出输入的数字。当用户输入非整数的东西(如符号和字符)时,程序会输出“非整数”。

我目前的想法(伪代码)如下:

`int main(){
    int value;
    printf("Enter numbers");
    scanf("%d", &value);
    if(value is integer){
        printf("%d", value);
    } else {
        printf("not integer");
    } 
    return 0;
}`
什么让我得到的是scanf;通过使用%d,我假设用户将输入一个整数值,但用户可以输入非整数的值,因此我无法使用if语句if( value is integer)进行比较。如何进行比较以确定输入的值是否为整数?

4 个答案:

答案 0 :(得分:0)

我不知道这是不是一件好事。

您可以使用ASCII来检查输入类型是否为整数 (ASCII格式为48-57之间)

就像这样

char value;
int flag = 0; //to check true or false (0 means false, and 1 means true)
printf("Enter numbers");
scanf("%c", &value);
for(int i = 48; i <= 57; i++){
    if(value == i){
        flag = 1;
        break;
    }
}
if(flag == 1){
    printf("%c", value);
} else {
    printf("not integer");
}

答案 1 :(得分:0)

  

如何根据用户输入打印不同的内容?

步骤1:阅读用户输入的

char buf[100];
if (fget(buf, sizeof buf, stdin)) {
  // something was entered

第2步:测试字符串

  char *end;
  long value = strtol(buf, *end);
  // If the end is the same as the beginning, no conversion occurred.
  if (end == buf) {
    puts("not integer");
  }
    printf("%ld\n", value);
  }
}

其他代码可以查找整数后发生的输入。此外,代码可以测试溢出long范围的大量数据。

答案 2 :(得分:0)

代码如下。它适用于输入负数和十进制数等不同情况:

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

int main() {
    char input[20];
    int wrongFlag = 0;
    scanf("%s", input);
    if (input[0] == '0' && strlen(input) > 1) {
        wrongFlag = 1;
        //for number starts with 0, and string length>1 eg: 010
    }
    for (int i = 0; i < strlen(input); i++) {
        if (i == 0 && (input[i] == '-' && strlen(input) > 2 && input[i + 1] == '0')) {
            //check first round only: negative number with length >2 and starts with 0 eg: -010.
            wrongFlag = 1;
            continue;
        }
        if (i != 0 && !isdigit(input[i])) {
            //check following rounds, check if it is not digit
            wrongFlag = 1;
            break;
        }
    }
    if (wrongFlag) {
        printf("Not integer");
    }
    else {
        printf("integer");
    }
    return 0;
}

答案 3 :(得分:0)

试试这个对我有用。

#include<stdio.h>
#include<string.h>
int main()
{
    int i;
    char value[50];
    int len;
    printf("Enter maximum 50 digits\n");
    /* enter the values you wanted*/
    printf("Enter the value: ");
    gets(value);
    len = strlen(value);
    /*it will iterate upto the end of the user input*/
    for(i=0;i<len;i++)
    {
        if(48<value[i] && value[i]<=57)
        {
            if(i==(len-1))
                printf("It's an integer");          
        }
        else{

            printf(" Not an integer");
            break;
        }
    }
    return 0;

}