Определение типа данных путем считывания строки

Обновить

November 2018

Просмотры

101 раз

4

Таким образом, я задавался вопросом, что было бы самым простым способом для проверки пользовательского ввода (стандартного ввода). Я пришел к выводу, в идеале было бы Scanf ввода пользователя и распечатать результаты.

Хотя сейчас я несколько смущен, о том, как я должен это сделать. Вот что я имел в виду:

#include <stdio.h>
int main(){

char input[30];    

 printf("Please enter text\n");
 scanf("%s", &input);

 ...

Так вот часть я не могу обернуть мою голову вокруг. Так что я хотел бы сделать, это запустить через все слово (вход), посимвольно.

В принципе, если строка consits только из цифр (0-9), я хотел бы вход быть идентифицирован как число. В противном случае, обнаружить его в виде строки.

Я сделал справедливое немного исследований (хотя имейте в виду, я абсолютный новичок), есть способ с STRCMP () функции, но я предпочел бы избежать других библиотек, таких как string.h вообще и просто сделать это простой способ, как я пытался объяснить.

1 ответы

3

Просто сделай это.

#include <stdio.h>

int checkIfNumber(const char *word) {
    /* check until the string ends */
    while (*word != '\0') {
        /* return 0 if the character isn't a number */
        if (*word < '0' || '9' < *word) return 0;
        /* proceed to the next character */
        word++;
    }
    /* no characters other than numbers found */
    return 1;
}

int main(void){

    char input[30];

    printf("Please enter text\n");
    scanf("%29s", input);

    if(checkIfNumber(input)) {
        printf("%s is number\n", input);
    } else {
        printf("%s is string\n", input);
    }

    return 0;
}

Обратите внимание, что код символа для чисел непрерывны в С, так что этот метод диапазона на основе полезна для проверки, является ли символ число (десятичное число). Этот метод не может работать для алфавитов, особенно в системах, в которых используется код, не ASCII символов.

N1256 5.2.1 Наборы символов

В обеих основных наборах символов источника и выполнения, значение каждого символа после 0 в приведенном выше списке десятичных цифр должно быть один больше, чем значение предыдущего.