"Олимпийка" без решения
От: Аноним  
Дата: 26.03.12 15:40
Оценка:
Си.

value = "123";

<..>

void Fn_ver01(const char *value)
{
int I = atoi(value);

printf("%d", I);

}


Результат: 0

void Fn_ver02(const char *value)
{
int I;
char buf[100];

strcpy(buf, value);

I = atoi(buf);

printf("%d", I);

}


Результат: 123


Вторую половину дня сегодня положил на поиски ответа: По Че Му?
Re: "Олимпийка" без решения
От: Сыроежка  
Дата: 26.03.12 15:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Си.


А>value = "123";


А><..>


А>
А>void Fn_ver01(const char *value)
А>{
А>int I = atoi(value);

А>printf("%d", I);

А>}
А>


А>Результат: 0


А>
А>void Fn_ver02(const char *value)
А>{
А>int I;
А>char buf[100];

А>strcpy(buf, value);

А>I = atoi(buf);

А>printf("%d", I);

А>}
А>


А>Результат: 123



А>Вторую половину дня сегодня положил на поиски ответа: По Че Му?


Вы не там ищите ошибку. Код корректный и в обоих случаях должен выводиться один и тот же результат.

В первой функции перед использованием value выведите ее на консоль и посмотрите, что содерэится по передаваемому адресу.
Меня можно встретить на www.cpp.forum24.ru
Re[2]: "Олимпийка" без решения
От: Сыроежка  
Дата: 26.03.12 15:53
Оценка:
Например, причиной может быть то что вы инкриментировали сам указатель valur и не заметили этого.
Меня можно встретить на www.cpp.forum24.ru
Re[2]: "Олимпийка" без решения
От: Сыроежка  
Дата: 26.03.12 15:56
Оценка:
А, вообще-то, на будущее я вам советую писать пример компилируемого кода, чтобы его полностью можно было скопировать и запустить на компиляцию на своем компьютере. Это в первую очередь вам самому поможет найти ошибку.
Меня можно встретить на www.cpp.forum24.ru
Re: "Олимпийка" без решения
От: 8086  
Дата: 26.03.12 16:04
Оценка: +1
Полагаю, что дело в руках. Точнее в месте их произростания. Половину дня не найти силы чтоб сделать "step in" вовнутрь atoi, который в VS есть в исходнике на С (?)
Re: "Олимпийка" без решения
От: Caracrist https://1pwd.org/
Дата: 26.03.12 16:09
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>Вторую половину дня сегодня положил на поиски ответа: По Че Му?


если я правильно понял, то нужно что-то написать на месте:

<..>

тогда ответ прост:
  посмотреть решение
#define atoi(x) sizeof(x) > sizeof(char *)?atoi(x):0

http://codepad.org/MvvRkQYN

~~~~~
~lol~~
~~~ Single Password Solution
Re[2]: "Олимпийка" без решения
От: vayerx  
Дата: 26.03.12 17:04
Оценка: +1
Здравствуйте, Caracrist, Вы писали:

C>#define atoi(x) sizeof(x) > sizeof(char *)?atoi(x):0


на правах занудства:
printf("%d", 42*atoi("5") - 70);
Re[3]: "Олимпийка" без решения
От: Caracrist https://1pwd.org/
Дата: 26.03.12 17:05
Оценка:
Здравствуйте, vayerx, Вы писали:

V>
V>printf("%d", 42*atoi("5") - 70);
V>

это уже другая задача.
~~~~~
~lol~~
~~~ Single Password Solution
Re[4]: "Олимпийка" без решения
От: vayerx  
Дата: 26.03.12 19:39
Оценка: :)
Здравствуйте, Caracrist, Вы писали:

C>это уже другая задача. :xz:

я про скобочки в define, если что
Re: "Олимпийка" без решения
От: MasterZiv СССР  
Дата: 27.03.12 04:48
Оценка:
> Си.
>
> value = "123";



Где объявление value ? Какого оно типа ?
Posted via RSDN NNTP Server 2.1 beta
Re[2]: "Олимпийка" без решения
От: AndreySpam  
Дата: 27.03.12 05:57
Оценка:
Здравствуйте, MasterZiv, Вы писали:


>> Си.

>>
>> value = "123";



MZ>Где объявление value ? Какого оно типа ?



struct User
{
char value[10];
}



Компилируемый код приводить нет смысла, т.к. я его собираю не на x86. На терминале сбора данных. Исходниками либ, дебагерами я тоже не располагаю.
Re[3]: "Олимпийка" без решения
От: AndreySpam  
Дата: 27.03.12 07:07
Оценка:
Здравствуйте, AndreySpam, Вы писали:

AS>Здравствуйте, MasterZiv, Вы писали:



>>> Си.

>>>
>>> value = "123";



MZ>>Где объявление value ? Какого оно типа ?



AS>
AS>struct User
AS>{
AS>char value[10];
AS>}
AS>



AS>Компилируемый код приводить нет смысла, т.к. я его собираю не на x86. На терминале сбора данных. Исходниками либ, дебагерами я тоже не располагаю.


А может быть проблема в неверном использовании extern?
Re[4]: "Олимпийка" без решения
От: Сыроежка  
Дата: 27.03.12 09:27
Оценка: 3 (1) +1 -1
Здравствуйте, AndreySpam, Вы писали:

AS>Здравствуйте, AndreySpam, Вы писали:


AS>>Здравствуйте, MasterZiv, Вы писали:



>>>> Си.

>>>>
>>>> value = "123";



MZ>>>Где объявление value ? Какого оно типа ?



AS>>
AS>>struct User
AS>>{
AS>>char value[10];
AS>>}
AS>>



AS>>Компилируемый код приводить нет смысла, т.к. я его собираю не на x86. На терминале сбора данных. Исходниками либ, дебагерами я тоже не располагаю.


AS>А может быть проблема в неверном использовании extern?


А откуда здесь вообще etern?! Я именно поэтому вам неоднократно и советовал: составьте простой компилируемый пример, и вы сами же быстро обнаружите, что проблемак в вашем коде а не в функции atoi.
Меня поражает, как многие начинают тратить кучу времени на различные абстрактные обсуждения вместо того, чтобы самостоятельно составить демонстрационный готовый для компиляции простой пример, демонстрирующий проблему.

Если такого примера нет, то все подобные гадания — это обычно пустая трата времени!

Я бы вообще на месте моедраторов удалял бы такие темы, где говорится о каком-нибудь баге либо функции, либо компилятора, и при этом не предоставляется демонстрационный пример, который все могли бы по крайней мере скопировать для проверки в своем компиляторе.
Меня можно встретить на www.cpp.forum24.ru
Re[5]: "Олимпийка" без решения
От: AndreySpam  
Дата: 27.03.12 09:38
Оценка:
Здравствуйте, Сыроежка, Вы писали:

С>Здравствуйте, AndreySpam, Вы писали:


AS>>Здравствуйте, AndreySpam, Вы писали:


AS>>>Здравствуйте, MasterZiv, Вы писали:



>>>>> Си.

>>>>>
>>>>> value = "123";



MZ>>>>Где объявление value ? Какого оно типа ?



AS>>>
AS>>>struct User
AS>>>{
AS>>>char value[10];
AS>>>}
AS>>>



AS>>>Компилируемый код приводить нет смысла, т.к. я его собираю не на x86. На терминале сбора данных. Исходниками либ, дебагерами я тоже не располагаю.


AS>>А может быть проблема в неверном использовании extern?


С>А откуда здесь вообще etern?! Я именно поэтому вам неоднократно и советовал: составьте простой компилируемый пример, и вы сами же быстро обнаружите, что проблемак в вашем коде а не в функции atoi.

С>Меня поражает, как многие начинают тратить кучу времени на различные абстрактные обсуждения вместо того, чтобы самостоятельно составить демонстрационный готовый для компиляции простой пример, демонстрирующий проблему.

С>Если такого примера нет, то все подобные гадания — это обычно пустая трата времени!


С>Я бы вообще на месте моедраторов удалял бы такие темы, где говорится о каком-нибудь баге либо функции, либо компилятора, и при этом не предоставляется демонстрационный пример, который все могли бы по крайней мере скопировать для проверки в своем компиляторе.
Re[5]: "Олимпийка" без решения
От: AndreySpam  
Дата: 27.03.12 09:41
Оценка:
Здравствуйте, Сыроежка, Вы писали:

С>Здравствуйте, AndreySpam, Вы писали:


AS>>Здравствуйте, AndreySpam, Вы писали:


AS>>>Здравствуйте, MasterZiv, Вы писали:



>>>>> Си.

>>>>>
>>>>> value = "123";



MZ>>>>Где объявление value ? Какого оно типа ?



AS>>>
AS>>>struct User
AS>>>{
AS>>>char value[10];
AS>>>}
AS>>>



AS>>>Компилируемый код приводить нет смысла, т.к. я его собираю не на x86. На терминале сбора данных. Исходниками либ, дебагерами я тоже не располагаю.


AS>>А может быть проблема в неверном использовании extern?


С>А откуда здесь вообще etern?! Я именно поэтому вам неоднократно и советовал: составьте простой компилируемый пример, и вы сами же быстро обнаружите, что проблемак в вашем коде а не в функции atoi.

С>Меня поражает, как многие начинают тратить кучу времени на различные абстрактные обсуждения вместо того, чтобы самостоятельно составить демонстрационный готовый для компиляции простой пример, демонстрирующий проблему.

С>Если такого примера нет, то все подобные гадания — это обычно пустая трата времени!


С>Я бы вообще на месте моедраторов удалял бы такие темы, где говорится о каком-нибудь баге либо функции, либо компилятора, и при этом не предоставляется демонстрационный пример, который все могли бы по крайней мере скопировать для проверки в своем компиляторе.



Вы заманали, товарищ. Мне не лично пример не нужен, т.к. у меня реальный код открыт, который я компилю по 5 раз на дню. Если пример нужен Вам, то в первом сообщении исходные данные в адаптированном виде были приведены.
Re[6]: "Олимпийка" без решения
От: Сыроежка  
Дата: 27.03.12 09:56
Оценка: +1
Здравствуйте, AndreySpam, Вы писали:

AS>Здравствуйте, Сыроежка, Вы писали:


С>>Здравствуйте, AndreySpam, Вы писали:


AS>>>Здравствуйте, AndreySpam, Вы писали:


AS>>>>Здравствуйте, MasterZiv, Вы писали:



>>>>>> Си.

>>>>>>
>>>>>> value = "123";



MZ>>>>>Где объявление value ? Какого оно типа ?



AS>>>>
AS>>>>struct User
AS>>>>{
AS>>>>char value[10];
AS>>>>}
AS>>>>



AS>>>>Компилируемый код приводить нет смысла, т.к. я его собираю не на x86. На терминале сбора данных. Исходниками либ, дебагерами я тоже не располагаю.


AS>>>А может быть проблема в неверном использовании extern?


С>>А откуда здесь вообще etern?! Я именно поэтому вам неоднократно и советовал: составьте простой компилируемый пример, и вы сами же быстро обнаружите, что проблемак в вашем коде а не в функции atoi.

С>>Меня поражает, как многие начинают тратить кучу времени на различные абстрактные обсуждения вместо того, чтобы самостоятельно составить демонстрационный готовый для компиляции простой пример, демонстрирующий проблему.

С>>Если такого примера нет, то все подобные гадания — это обычно пустая трата времени!


С>>Я бы вообще на месте моедраторов удалял бы такие темы, где говорится о каком-нибудь баге либо функции, либо компилятора, и при этом не предоставляется демонстрационный пример, который все могли бы по крайней мере скопировать для проверки в своем компиляторе.



AS>Вы заманали, товарищ. Мне не лично пример не нужен, т.к. у меня реальный код открыт, который я компилю по 5 раз на дню. Если пример нужен Вам, то в первом сообщении исходные данные в адаптированном виде были приведены.


Вы не понимаете, что пример нужен в первую очередь именно вам для того, чтобы локализовать проблему. Это ничто иное, как обычный прием по поиску ошиьок.
А то, что вы в самом начале привели очевидно к вашей проблеме никакого отношения не имеет. Во-первых, все гадают, как у вас объявлена переменная value (кажется так она у вас там называлась?). Во-вторых, вдруг, обнаруживается, что у вас в коде есть extern.
Я вам с самого начала говорил, что проблема именно в вашем коде, а не в atoi. И я и сейчас в этом нисколько не сомневаюсь. Если бы вы самостоятельно тпроделали типичные шаги по локализации ошибке, которые должен делать каждый программист, то вопрос давно бы был снят с повестки. Да вам бы даже и на форум не пришлось обращаться, так как вы бы сами быстро разобрались. И не нужны никакие исходники atoi и тем более делать пошаговую трассировку всего кода. Достаточно было создать минимальный компилируемый пример, а затем к нему добавлять постепенно другие элементы из вашего проекта как, например, объявление какой-то там переменной как extern о которой здесь никто не ведает.
Меня можно встретить на www.cpp.forum24.ru
Re[7]: "Олимпийка" без решения
От: AndreySpam  
Дата: 27.03.12 09:58
Оценка:
Здравствуйте, Сыроежка, Вы писали:

С>Здравствуйте, AndreySpam, Вы писали:


AS>>Здравствуйте, Сыроежка, Вы писали:


С>>>Здравствуйте, AndreySpam, Вы писали:


AS>>>>Здравствуйте, AndreySpam, Вы писали:


AS>>>>>Здравствуйте, MasterZiv, Вы писали:



>>>>>>> Си.

>>>>>>>
>>>>>>> value = "123";



MZ>>>>>>Где объявление value ? Какого оно типа ?



AS>>>>>
AS>>>>>struct User
AS>>>>>{
AS>>>>>char value[10];
AS>>>>>}
AS>>>>>



AS>>>>>Компилируемый код приводить нет смысла, т.к. я его собираю не на x86. На терминале сбора данных. Исходниками либ, дебагерами я тоже не располагаю.


AS>>>>А может быть проблема в неверном использовании extern?


С>>>А откуда здесь вообще etern?! Я именно поэтому вам неоднократно и советовал: составьте простой компилируемый пример, и вы сами же быстро обнаружите, что проблемак в вашем коде а не в функции atoi.

С>>>Меня поражает, как многие начинают тратить кучу времени на различные абстрактные обсуждения вместо того, чтобы самостоятельно составить демонстрационный готовый для компиляции простой пример, демонстрирующий проблему.

С>>>Если такого примера нет, то все подобные гадания — это обычно пустая трата времени!


С>>>Я бы вообще на месте моедраторов удалял бы такие темы, где говорится о каком-нибудь баге либо функции, либо компилятора, и при этом не предоставляется демонстрационный пример, который все могли бы по крайней мере скопировать для проверки в своем компиляторе.



AS>>Вы заманали, товарищ. Мне не лично пример не нужен, т.к. у меня реальный код открыт, который я компилю по 5 раз на дню. Если пример нужен Вам, то в первом сообщении исходные данные в адаптированном виде были приведены.


С>Вы не понимаете, что пример нужен в первую очередь именно вам для того, чтобы локализовать проблему. Это ничто иное, как обычный прием по поиску ошиьок.

С>А то, что вы в самом начале привели очевидно к вашей проблеме никакого отношения не имеет. Во-первых, все гадают, как у вас объявлена переменная value (кажется так она у вас там называлась?). Во-вторых, вдруг, обнаруживается, что у вас в коде есть extern.
С>Я вам с самого начала говорил, что проблема именно в вашем коде, а не в atoi. И я и сейчас в этом нисколько не сомневаюсь. Если бы вы самостоятельно тпроделали типичные шаги по локализации ошибке, которые должен делать каждый программист, то вопрос давно бы был снят с повестки. Да вам бы даже и на форум не пришлось обращаться, так как вы бы сами быстро разобрались. И не нужны никакие исходники atoi и тем более делать пошаговую трассировку всего кода. Достаточно было создать минимальный компилируемый пример, а затем к нему добавлять постепенно другие элементы из вашего проекта как, например, объявление какой-то там переменной как extern о которой здесь никто не ведает.

Тут прикол в следующем, я сделал модуль в отдельном проекте, тестил его, все Ок. Потом интегрировал этот модуль в написанный до меня проект и начались косяки вокруг atoi, atof. Я просто не представляю как к моему модулю "добавлять постепенно другие элементы" из в несколько раз большего готового проекта.
Re[8]: "Олимпийка" без решения
От: Сыроежка  
Дата: 27.03.12 10:07
Оценка:
Здравствуйте, AndreySpam, Вы писали:

AS>Тут прикол в следующем, я сделал модуль в отдельном проекте, тестил его, все Ок. Потом интегрировал этот модуль в написанный до меня проект и начались косяки вокруг atoi, atof. Я просто не представляю как к моему модулю "добавлять постепенно другие элементы" из в несколько раз большего готового проекта.


Как я понимаю, все эти функции расположены именно в вашем модуле?
Напрашивается вывод, что все дело в тех объектах, которые вы передаете в свои функции. Вполне возможно, что вы неправильно объявили некоторые переменные. Бывает так, что объявляются в каждом модуле переменная с внешним связыванием, но ни в одном модуле она не определяется. В этом случае некоторые редакторы связей "проглатывают" эту ситуацию и в каждом модуле создают отдельныю переменную, которая, фактически, сттановится переменной с внутренним связыванием. То есть в конечном итоге получается так, что в проекте начинают жить несколько объектов с одним и тем же именем, о которых вы думаете, что это один объект, а на самом деле это различные самостоятельные объекты.
Вот это вам и надо проверить. Для этого на мой взгляд вполне достаточно просто вывести на консоль или еще куда-нибудь все адреса подозрительных переменных при их опрределении и при передаче в вашу функцию. Возможно, что появится расхождение.
Меня можно встретить на www.cpp.forum24.ru
Re[3]: "Олимпийка" без решения
От: MasterZiv СССР  
Дата: 28.03.12 09:04
Оценка:
> MZ>Где объявление value ? Какого оно типа ?

> struct User

> {
> char value[10];
> }

> Компилируемый код приводить нет смысла,


Наоборот, очень бы надо.
Потому что это с таким:

value = "123";

не будет компилироваться.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: "Олимпийка" без решения
От: AndreySpam  
Дата: 30.03.12 11:11
Оценка: :))
Здравствуйте, MasterZiv, Вы писали:


>> MZ>Где объявление value ? Какого оно типа ?


>> struct User

>> {
>> char value[10];
>> }

>> Компилируемый код приводить нет смысла,


MZ>Наоборот, очень бы надо.

MZ>Потому что это с таким:

MZ>value = "123";


MZ>не будет компилироваться.


Лано. Я просто напросто думаю, что люди не могущие предположить, что в качестве аргумента для void fn(const char*) бай дефолт нужно подсовывать, как минимум, char*, не смогут помочь в моём вопросе "стопудова" :D

Проблема была, как нам показалось в переменных среды: "чото где-то кешировалось или типа того". Когда стали компилировать из командной строки, вроде бы, процесс пошел. Тьфу-тьфу-тьфу.
Re[5]: "Олимпийка" без решения
От: b-3 Россия  
Дата: 31.03.12 16:03
Оценка: +3 :))
Здравствуйте, AndreySpam, Вы писали:

AS>Лано. Я просто напросто думаю, что люди не могущие предположить, что в качестве аргумента для void fn(const char*) бай дефолт нужно подсовывать, как минимум, char*, не смогут помочь в моём вопросе "стопудова" :D

AS>Проблема была, как нам показалось в переменных среды: "чото где-то кешировалось или типа того". Когда стали компилировать из командной строки, вроде бы, процесс пошел. Тьфу-тьфу-тьфу.

Надеюсь, Вы нам сообщите какую марку бытовой техники/сотовых телефонов/банкоматов лучше не использовать? Или под что вы там atoi на risc работать уговариваете?
Забанен с формулировкой "клинический дисидент".
Re[6]: "Олимпийка" без решения
От: AndreySpam  
Дата: 03.04.12 13:19
Оценка:
Здравствуйте, b-3, Вы писали:

b-3>Здравствуйте, AndreySpam, Вы писали:


AS>>Лано. Я просто напросто думаю, что люди не могущие предположить, что в качестве аргумента для void fn(const char*) бай дефолт нужно подсовывать, как минимум, char*, не смогут помочь в моём вопросе "стопудова" :D

AS>>Проблема была, как нам показалось в переменных среды: "чото где-то кешировалось или типа того". Когда стали компилировать из командной строки, вроде бы, процесс пошел. Тьфу-тьфу-тьфу.

b-3>Надеюсь, Вы нам сообщите какую марку бытовой техники/сотовых телефонов/банкоматов лучше не использовать? Или под что вы там atoi на risc работать уговариваете?


Это профдевайсы, простым смертным не купить и даже смысла нет.
Re[5]: "Олимпийка" без решения
От: rg45 СССР  
Дата: 03.04.12 15:21
Оценка: +1
Здравствуйте, AndreySpam, Вы писали:

AS>Лано. Я просто напросто думаю, что люди не могущие предположить, что в качестве аргумента для void fn(const char*) бай дефолт нужно подсовывать, как минимум, char*, не смогут помочь в моём вопросе "стопудова" :D


AS>Проблема была, как нам показалось в переменных среды: "чото где-то кешировалось или типа того". Когда стали компилировать из командной строки, вроде бы, процесс пошел. Тьфу-тьфу-тьфу.


В общем, рассосалось, ну и слава богу. Причину ошибки, судя по всему, ты так и не выяснил. Все предложения поискать ошибку у тебя в коде ты отмел в сторону, даже не рассматривая. Зачем только было просить помощи, не понятно.
--
Справедливость выше закона. А человечность выше справедливости.
Re[5]: "Олимпийка" без решения
От: Erop Россия  
Дата: 03.04.12 17:18
Оценка:
Здравствуйте, AndreySpam, Вы писали:

AS>Проблема была, как нам показалось в переменных среды: "чото где-то кешировалось или типа того". Когда стали компилировать из командной строки, вроде бы, процесс пошел. Тьфу-тьфу-тьфу.


интересно, а что за "переменные среды" могут привести к тому, что atoi( "123" ) вернёт 0?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: фобос грунт
От: Erop Россия  
Дата: 03.04.12 17:26
Оценка:
Здравствуйте, AndreySpam, Вы писали:

AS>Это профдевайсы, простым смертным не купить и даже смысла нет.

Они же, наверное, ещё и дорогие, а может ещё, к тому же и в медицине юзаются, например, или в авиации например...

В общем лучше скажи, чем не надо пользоваться-то?
Или это таки ты фобос-грунт программировал?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: "Олимпийка" без решения
От: Lupus Украина  
Дата: 03.04.12 17:35
Оценка: :))
Здравствуйте, Erop, Вы писали:

E>интересно, а что за "переменные среды" могут привести к тому, что atoi( "123" ) вернёт 0?


New User Variable
Variable name: ATOI_RETURN_VALUE
Variable value: 0
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Homo homini lupus est. Запомните это и сразу забудьте 8)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.