Преобразование строк в числа в C: руководство для начинающих

В мире программирования преобразование строк в числа — распространенная и часто возникающая задача. Независимо от того, работаете ли вы с пользовательским вводом или читаете данные из файла, важно знать, как преобразовывать строки в числа. В этой статье мы рассмотрим несколько методов достижения этой цели на языке программирования C. Итак, хватайте свой любимый напиток и вперед!

Метод 1: использование функции atoi()
Сначала используется функция atoi(), сокращение от «ASCII to Integer». Эта функция является стандартной библиотечной функцией языка C, которая преобразует строку цифр в целое число. Вот пример:

#include <stdlib.h>
#include <stdio.h>
int main() {
    char str[] = "12345";
    int num = atoi(str);
    printf("The converted number is: %d\n", num);
    return 0;
}

Вывод:
Преобразованное число: 12345

Метод 2: использование функции strtol()
Функция strtol() — еще один удобный инструмент для преобразования строк в числа в C. Она обеспечивает большую гибкость, чем atoi(), поскольку позволяет указать основание номер и обработка ошибок. Вот пример:

#include <stdlib.h>
#include <stdio.h>
int main() {
    char str[] = "12345";
    char *end;
    long num = strtol(str, &end, 10);
    if (*end != '\0') {
        printf("Invalid input!\n");
    } else {
        printf("The converted number is: %ld\n", num);
    }
    return 0;
}

Вывод:
Преобразованное число: 12345

Метод 3: использование sscanf()
Функция sscanf() — это универсальная функция, которую можно использовать для различных задач анализа входных данных, включая преобразование строк в числа. Он работает путем сканирования строки на предмет указанных форматов и сохранения извлеченных значений. Вот как вы можете использовать sscanf() для преобразования строки в целое число:

#include <stdio.h>
int main() {
    char str[] = "12345";
    int num;
    sscanf(str, "%d", &num);
    printf("The converted number is: %d\n", num);
    return 0;
}

Вывод:
Преобразованное число: 12345

Метод 4: использование функции strtol() с обработкой ошибок
Если вам нужен больший контроль над обработкой ошибок, вы можете использовать strtol() в сочетании с дополнительными проверками. Вот пример, демонстрирующий, как обрабатывать недопустимый ввод:

#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
bool isNumber(const char *str) {
    char *end;
    strtol(str, &end, 10);
    return *end == '\0';
}
int main() {
    char str[] = "12345a";
    if (isNumber(str)) {
        long num = strtol(str, NULL, 10);
        printf("The converted number is: %ld\n", num);
    } else {
        printf("Invalid input!\n");
    }
    return 0;
}

Вывод:
Неверный ввод!

В этой статье мы рассмотрели несколько методов преобразования строк в числа на языке программирования C. Мы рассмотрели функцию atoi(), которая является простым и понятным вариантом, а также функцию strtol(), которая обеспечивает большую гибкость и возможности обработки ошибок. Кроме того, мы коснулись использования sscanf() для анализа строк. Поняв эти методы, вы сможете с легкостью выполнять преобразования строк в числа в C.