На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> sprintf(p, "(%s" , p); , ((
    в р пусто

    sprintf(p, "(%s" , р);

    в р ((

    а почему не (

    совсем не понял
      Похоже заносит в р сначала (, а потом по формату %s добавляет то, что в р.
      В коде (асме) смотреть надо.
        при
        sprintf(p, "(%s%s" , p,p);

        p=((((ю
          Значит так и есть...
          При в вызове sprintf в одном регистре (А) запоминается адрес р, в 2 других (Б В) тоже адрес р.
          Затем обрабатывается вывод по формату "(%s%s", в регистре А адрес смещается на количество символов. Выводится то, что по адресу р.
          И вообще функция printf древняя и не интелектуальная, с ней помню были часто проблемы
            Цитата maxutov @
            а почему не (
            Потому что
            Цитата 7.19.6.6 The sprintf function
            ExpandedWrap disabled
              #include <stdio.h>
               
              int sprintf(char * restrict s, const char * restrict format, ...);

            The sprintf function is equivalent to fprintf, except that the output is written into an array (specified by the argument s) rather than to a stream. A null character is written at the end of the characters written; it is not counted as part of the returned value. If copying takes place between objects that overlap, the behavior is undefined.


            Добавлено
            Это из C99. Если взять более распространённый C90, то там то же самое, только номер пункта 4.9.6.5 и без restrict.
              и ни один компилятор не скажет
              что ub?
                А как он об этом узнает?
                  ну данную
                  ситуацию можно проанализировать
                    Ну на, анализируй:
                    ExpandedWrap disabled
                      void coolFunc(char*, const char*, size_t ...);
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0251 ]   [ 16 queries used ]   [ Generated: 23.04.24, 15:05 GMT ]