У меня есть переменная 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++;
}
}
Отредактировано: я решил свою проблему. Большое спасибо!
Просто используйте atoi()
или strto(u)l()
, он будет игнорировать ведущие пробелы.
вы имеете ввиду Хр = "123" или Хр = "\ t123" наверное
@Ctx atoi() не помог.
@Бруно в обоих случаях.
@ĐứcTuấnTrương Очень плохо. Возможно, было бы полезно, если бы вы показали минимальный компилируемый фрагмент кода для воспроизведения проблемы.
@Ctx я редактировал
@ĐứcTuấnTrương В коде есть несколько проблем, но в основном он выглядит нормально. Однако это еще не завершено, как объявляется «число»? Как вы наблюдаете, что он не работает, так как нет выхода?
Отредактируйте свой вопрос, чтобы показать содержимое pid.txt и вывод при выполнении вашей программы. Обратите внимание, что вы не проверяете успех fopen
Я исправил это. Какой же я дурак :))
@ĐứcTuấnTrương снова НИКОГДА используйте атои !
@bruno Выше вы пишете «использовать одну из функций atol или sscanf». Итак, чем атол лучше атои?
@Ctx извините, опечатка, я хотел сказать strtol, как в моем ответе ;-)
вы можете использовать функцию atoi()
для прямого преобразования строки в целое число.
Функция библиотеки C:
int atoi(const char *str)
преобразует строковый аргумент str в целое число.
Эта функция возвращает преобразованное целое число в виде значения int. Если не может быть выполнено допустимое преобразование, возвращается ноль.
хорошая часть заключается в том, что он игнорирует пробелы.
вы можете не захотеть хранить многосимвольную символьную константу в символьной переменной. Вместо этого используйте массив символов:
char c[] = " 123";
printf("%d\n", atoi(c));
требуется ли хранить его в символьной переменной?
atoi
это плохо. Вместо этого используйте stoi
. Почему я не должен использовать atoi()?
Какая целевая платформа? Использование многосимвольных литералов является относительно необычным расширением.