Преобразование char в int с пробелом в C

У меня есть переменная char, например a = '123' или b = '\ t123'. Итак, как преобразовать их в целое число? Моя проблема заключается в том, что текстовый файл чтения формы содержит несколько строк символов, таких как a и b. Я хочу преобразовать их и сохранить в массив. Вот мой код:

int main(){
FILE *file_pid;
int i = 0;
int number[100];
char line[20];
    file_pid = fopen("pid.txt","r");
    while(fgets(line, sizeof line, file_pid) != NULL){
         number[i] = atoi(line);
         i++;
    } 
}

Отредактировано: я решил свою проблему. Большое спасибо!

Какая целевая платформа? Использование многосимвольных литералов является относительно необычным расширением.

supercat 10.04.2019 18:27

Просто используйте atoi() или strto(u)l(), он будет игнорировать ведущие пробелы.

Ctx 10.04.2019 18:28

вы имеете ввиду Хр = "123" или Хр = "\ t123" наверное

bruno 10.04.2019 18:34

@Ctx atoi() не помог.

DT_NoHope 10.04.2019 18:43

@Бруно в обоих случаях.

DT_NoHope 10.04.2019 18:43

@ĐứcTuấnTrương Очень плохо. Возможно, было бы полезно, если бы вы показали минимальный компилируемый фрагмент кода для воспроизведения проблемы.

Ctx 10.04.2019 18:43

@Ctx я редактировал

DT_NoHope 10.04.2019 19:00

@ĐứcTuấnTrương В коде есть несколько проблем, но в основном он выглядит нормально. Однако это еще не завершено, как объявляется «число»? Как вы наблюдаете, что он не работает, так как нет выхода?

Ctx 10.04.2019 19:03

Отредактируйте свой вопрос, чтобы показать содержимое pid.txt и вывод при выполнении вашей программы. Обратите внимание, что вы не проверяете успех fopen

bruno 10.04.2019 19:08

Я исправил это. Какой же я дурак :))

DT_NoHope 10.04.2019 19:09

@ĐứcTuấnTrương снова НИКОГДА используйте атои !

bruno 10.04.2019 19:10

@bruno Выше вы пишете «использовать одну из функций atol или sscanf». Итак, чем атол лучше атои?

Ctx 10.04.2019 19:27

@Ctx извините, опечатка, я хотел сказать strtol, как в моем ответе ;-)

bruno 10.04.2019 19:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
13
1 206
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете использовать функцию atoi() для прямого преобразования строки в целое число. Функция библиотеки C:

int atoi(const char *str) преобразует строковый аргумент str в целое число. Эта функция возвращает преобразованное целое число в виде значения int. Если не может быть выполнено допустимое преобразование, возвращается ноль. хорошая часть заключается в том, что он игнорирует пробелы.

вы можете не захотеть хранить многосимвольную символьную константу в символьной переменной. Вместо этого используйте массив символов:

char c[] = " 123"; printf("%d\n", atoi(c));

требуется ли хранить его в символьной переменной?

coco97 10.04.2019 19:00
atoi это плохо. Вместо этого используйте stoi. Почему я не должен использовать atoi()?
phuclv 11.04.2019 14:03

Другие вопросы по теме