Перейти к содержимому

Как перевести char в int в си

  • автор:

Как перевести char в int в си

Сообщение от kaljan775

а мой пример вы не поняли, да.

А ваш пример, а точнее часть его очень даже пригодилось.
я щас разработаю код и выложу. За ранее скажу огромное спосибо за мысль и идею.

вот код программы. его можно сокротить введя функчии и указатели. но это потом.

char str_2[100]="(1203+123-345/321*3214)"; int chislo[15]; int chisel[15]; char znak[50]; int a,i,f,g;//разные счётчики. for(int i=0;i <15;i++) < chislo[i]=0; chisel[i]=0; >a=0; i=0; g=0; for(f=0;f <100;f++) < switch(str_2[f])< case '+':znak[i]=str_2[f]; for(g=0;gg=0;a=0;i++; break; case '-':znak[i]=str_2[f];for(g=0;g g=0;a=0;i++;break; case '*':znak[i]=str_2[f];for(g=0;g g=0;a=0;i++;break; case '/':znak[i]=str_2[f];for(g=0;g g=0;a=0;i++;break; case '0':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case '1':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case '2':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case '3':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case '4':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case '5':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case '6':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case '7':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case '8':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case '9':chislo[g]=((static_cast( str_2[f] ))-48);g++;a++;break; case ')':znak[i]=' '; for(g=0;g break; default:break; > > for(int i=0;i

Последний раз редактировалось Stilet; 12.12.2010 в 12:55 .

Как перевести char в int?

vabka

cpp

  • C++

Не могу, понять как компьютер перемещает свой знак?

  • 1 подписчик
  • 16 часов назад
  • 74 просмотра

cpp

  • C++
  • +2 ещё

Почему не компилируется код C++ в VS code/Platformio?

  • 1 подписчик
  • 18 часов назад
  • 65 просмотров

cpp

  • C++

Что быстрее индексы или указатели?

  • 1 подписчик
  • 03 янв.
  • 172 просмотра

c#

  • C#
  • +4 ещё

Как реализовать движение частиц в векторном поле или сплошной среде?

  • 1 подписчик
  • 03 янв.
  • 106 просмотров

windows

  • Windows
  • +2 ещё

Как отлавливать курсор при наведении на дочернее окно?

  • 1 подписчик
  • 02 янв.
  • 118 просмотров

cpp

  • C++

Как обеспечивается совместимость динамических библиотек при ликовке в рантайме?

  • 3 подписчика
  • 30 дек. 2023
  • 312 просмотров

cpp

  • C++

Как установить библиотеку c++ если в папке lib пусто и при запуске ошибка LINK2019?

  • 1 подписчик
  • 29 дек. 2023
  • 57 просмотров

cpp

  • C++

Как лучше добавить перед структурой ещё одну и поместить в массив?

  • 1 подписчик
  • 29 дек. 2023
  • 71 просмотр

cpp

  • C++

Почему прога билдится, но не запускается?

  • 1 подписчик
  • 28 дек. 2023
  • 97 просмотров

cpp

  • C++
  • +1 ещё

Какие хорошие ресурсы для изучения c++?

  • 2 подписчика
  • 28 дек. 2023
  • 240 просмотров

Bell Integrator • Екатеринбург

До 150 000 ₽

Bell Integrator • Санкт-Петербург

До 150 000 ₽

До 150 000 ₽

08 янв. 2024, в 16:37

15000 руб./за проект

08 янв. 2024, в 16:24

1500 руб./за проект

08 янв. 2024, в 16:12

1350 руб./в час

Минуточку внимания

Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями

  • Есть ли не официальные аналоги миджорни апи?
    • 3 подписчика
    • 1 ответ
    • 4 подписчика
    • 1 ответ
    • 3 подписчика
    • 0 ответов
    • 3 подписчика
    • 3 ответа
    • 2 подписчика
    • 0 ответов
    • 2 подписчика
    • 4 ответа
    • 2 подписчика
    • 3 ответа
    • 2 подписчика
    • 1 ответ
    • 2 подписчика
    • 0 ответов
    • 2 подписчика
    • 2 ответа

    Как преобразовать массив символов char[] в int?

    Посмотрите на функции atoi или более мощную strtol .

    Отслеживать
    ответ дан 20 мар 2021 в 18:59
    219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
    20 мар 2021 в 19:43

    @МаксимФисман Давайте уберем ссылки вообще — ответ останется полным и самодостаточным: Посмотрите на функции atoi или более мощную strtol . В данном случае ссылка — дополнение к ответу, чтобы вопросителю 🙂 было легче найти нужную информацию, а не собственно ответ.

    21 мар 2021 в 4:06

    Для преобразования C-строки в значение типа int есть по крайней мере следующие способы:

    #include . char buffer[256] = "12345"; int val = std::atoi(buffer); cout  

    Если не удалось преобразовать строку в число (пустая строка, или последовательность символов в строке не представляет число), то функция возвращает ноль.
    Если строка содержит число, но оно не представимо типом int , то поведение функции не определено.

    #include . char buffer[256] = "12345"; int val = 0; int result = std::sscanf(buffer, "%d", &val); if (result == EOF) < //Входная строка пустая >else if (result == 0) < //Не удалось преобразовать строку в число >else

    Если строка содержит число, но оно не представимо типом int , то поведение функции не определено.

    #include #include #include . char buffer[256] = "12345"; char* buffer_end = nullptr; int saved_errno = errno; errno = 0; long lval = strtol(buffer, &buffer_end, 10); int cur_errno = errno; errno = saved_errno; if (buffer == buffer_end) < //Не удалось преобразовать строку в число >else if (cur_errno != 0) < //Переполнение при преобразовании в число >else if (lval < std::numeric_limits::min() || lval > std::numeric_limits::max()) < //Переполнение при преобразовании в число >else < int val = static_cast(lval); cout
    • std::string + функция std::stoi() .
    #include #include . char buffer[256] = "12345"; try < int val = std::stoi(std::string(buffer)); cout catch (const std::invalid_argument& e) < //Не удалось преобразовать строку в число >catch (const std::out_of_range& e) < //Переполнение при преобразовании в число >
    #include . char buffer[256] = "12345"; int val = 0; std::stringstream stream; stream > val; if (stream.fail()) < //Либо не удалось преобразовать строку в число //Либо переполнение при преобразовании в число >else
    • Функция std::from_chars()
    #include #include #include . char buffer[256] = "12345"; int val = 0; auto res = std::from_chars(buffer, buffer + std::strlen(buffer), val); if (res.ec == static_cast(0)) < cout else if (res.ec == std::errc::invalid_argument) < //Не удалось преобразовать строку в число >else if (res.ec == std::errc::result_out_of_range) < //Переполнение при преобразовании в число >

    std::from_chars() — единственная из представленных функций, на которую не влияют текущие глобальные локали. Но в отличие от других способов, данная функция не игнорирует ведущие пробельные символы в строке. Также неотрицательные числа не могут начинаться с символа + .

    Developing.ru

    На Win32 тип int имеет размер 4 байта, а char - 1 байт. Таким образом "честное" преобразование int в char невозможно. Возможно лишь преобразование с усечением (truncation). Самое распространенное усечение - это отбрасование старших байт. Как это сделать продемонстировал IceFlame.

    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

    dmitry1208197320 Сообщения: 16 Зарегистрирован: 13 янв 2010, 17:48
    Спасибо за ответ!
    eqltv Сообщения: 6 Зарегистрирован: 05 фев 2010, 14:22
    IceFlame писал(а): Ну, например,

    int a; char b; b = (char) a; 

    Это язык си, а вопрос был про C++. В плюсах лучше писать так:

    b = char(a); 

    или еще лучше (понятнее)

    b = static_cast(a); 

    dmitry1208197320 Сообщения: 16 Зарегистрирован: 13 янв 2010, 17:48
    спасибо, учту
    BulldozerBSG Сообщения: 263 Зарегистрирован: 09 янв 2010, 04:14 Контактная информация:
    eqltv писал(а): Это язык си, а вопрос был про C++. В плюсах лучше писать так:

    b = char(a); 

    или еще лучше (понятнее)

    b = static_cast(a); 

    А не одна ли малина, или компилятор код разный генерирует?

    Romeo Сообщения: 3091 Зарегистрирован: 02 мар 2004, 17:25 Откуда: Крым, Севастополь Контактная информация:

    BulldozerBSG, ну если начинать говорить о С++ преобразованиях типов, то это целая отдельная и очень интересная тема со своей собственной философией. Можем обсудить все тонкости, если хочешь. или если кто-нибудь из посетителей хочет

    Будет ли сгенерирован другой код? Для static_cast не будет. Однако static_cast более безопасен, так как помимо преобразования как такового, на этапе компиляции он дополнительно осуществляет валидацию правильности преобразования. Любой тип скастить в либой тип с помощью static_cast нельзя: в случае несоответствия будет выдана ошибка компиляции.

    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

    GeorgeSoca Сообщения: 0 Зарегистрирован: 12 окт 2015, 04:09 Откуда: Guam Контактная информация:

    На нашем сайте вы можете чувствовать себя в безопасности! Кроме того, мы используем зеркальные жесткие диски на все наши серверы, поэтому мы также взять резервную два раза в день на отдельных серверах. Мы используем ISPmanager, как на панели управления. ISPmanager является панель управления, которая позволяет легко управлять своей веб-сайт. С нами вы можете разместить столько веб-сайты и домены, которые вы хотите для учетной записи хостинга.
    virtual hosting

    9 сообщений • Страница 1 из 1

    • Системное и прикладное программирование
    • ↳ Win API, Shell..
    • ↳ C и C++
    • ↳ Delphi и Pascal
    • ↳ Программирование на Pascal и Delphi (Object Pascal)
    • ↳ Все вопросы ООП
    • ↳ Компоненты в Delphi
    • ↳ Delphi и WinAPI, ActiveX и OLE , COM и DCOM, и т.д
    • ↳ Java
    • ↳ MS Office и VB(A).
    • ↳ Ассемблер
    • WEB программирование
    • ↳ JScript, VBScript, DHTML.
    • ↳ Perl, PHP, ASP .
    • Некатегоризированное
    • ↳ Вопрошайка
    • ↳ SQL
    • ↳ Алгоритмы
    • ↳ Дизайн и графика
    • Администрирование
    • ↳ Apache, IIS.
    • ↳ Операционные системы
    • Работа
    • ↳ Вакансии и заказы для программистов
    • ↳ Поиск работы и заказов.
    • ↳ Решите мне задачку
    • ↳ задачи на Паскале и Delphi
    • ↳ задачи на C и C++
    • ↳ задачи на Basic и Visual Basic (VB)
    • Прочее
    • ↳ Жалобная книга
    • ↳ Флейм.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *