Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Umar Egamberdie
0 / 0 / 2
Регистрация: 20.12.2015
Сообщений: 254
1

Непонятное поведение функции atol

13.05.2018, 10:48. Просмотров 254. Ответов 2
Метки нет (Все метки)

добрый день, конвертирую строку str4 к long int использую функцию atol и смотрю в дебаге получаю ерунду, подскажите как исправить

C
1
2
3
4
5
6
char str4[5]='43200';
long int proverka;
 
...
 
proverka = atol(str4);
ответы на рисунке
0
Миниатюры
Непонятное поведение функции atol   Непонятное поведение функции atol  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2018, 10:48
Ответы с готовыми решениями:

Непонятное поведение printf()
Доброго времени суток всем. Недавно начал изучать си и возникло непонимание происходящего в...

Странное поведение функции.
написал метод #typedef long double ldouble ldouble GetMaximumDifferanceOn(ldouble...

Неожиданное поведение функции
@ stake-k26 and others Задание: Предсказать, что будет выдано. #include <stdio.h> int...

Непонятное поведение функции
почему-то в функцию handlePlayerInput всегда передаётся true. Почему сам понять не могу //Game.cpp...

Непонятное поведение простой функции
Решал одну задачу на рекурсию, долго не мог добится результата пока не понял что проблема не в...

2
Байт
Эксперт C
20321 / 12877 / 2697
Регистрация: 24.12.2010
Сообщений: 26,909
13.05.2018, 11:43 2
1. Почему значение в одиночных кавычках?
2. char str4[6] = "43200"; А то терминальному нулю негде приткнуться.
0
Si14
48 / 46 / 31
Регистрация: 26.07.2015
Сообщений: 104
13.05.2018, 14:02 3
Строки в C нуль терминальные. Значит после пяти символ обязан следовать шестой нуль терминал, под который в str4 нет места. Функция atol определяет конец строки которую надо преобразовать как раз по нуль терминалу, значит будет читать мусор из памяти дальше.
Для строковых литералов надо использовать двойные кавычки(тогда компилятор сам ставит нуль терминал), одинарные нужны для отдельных символов.
Вот два правильных варианта.
C
1
2
3
4
5
6
    char *str4_1="43200";
    char str4_2[]="43200";
    long int proverka1, proverka2;
    proverka1 = atol(str4_1);
    proverka2 = atol(str4_2);
    printf("result_1 %ld, result_2 %ld",proverka1,proverka2);
1
Миниатюры
Непонятное поведение функции atol  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2018, 14:02

Непонятное мне поведение функции
Эта функция себя странно ведёт. Она работает и если с первого раза ввести цифры с клавиатуры, то...

Непонятное поведение функции mail()...
Отправляю почту с сайта используя функцию mail(...) Несмотря на возвращаемое значение false...

Непонятное поведение поведение TIM6 на STM32f4discovery
Вводные данные: SYSCLK=168Мгц; AHB Pressotir=1; APB1 Pressotir=4; TIM6_Pessotir=3; Т.о....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru