3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
|
|
1 | |
Как перенести параметры из ф-ции printf() в самодельную04.06.2011, 09:22. Показов 21786. Ответов 104
Метки нет (Все метки)
Ребят, подскажите как решить задачу.
Нужно перенести параметры функции printf() в самодельную ф-цию myfunk(). При условии если булева переменная Х==1. Если не равна 1, то не переносить. Задача осложняется тем, что число параметров ф-ции может быть переменным. Подскажите пожалуйста, буду очень признателен.
0
|
04.06.2011, 09:22 | |
Ответы с готовыми решениями:
104
Как перенести параметры с XP на 7 Передача ф-ции как параметра другой ф-ции Параметры printf Динамические параметры printf() |
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
|
||||||
04.06.2011, 10:27 [ТС] | 3 | |||||
функция определена в библиотеке stdio.h и имеет следующий синтаксис:
int printf( const char *format [, argument]... ); Здесь первый аргумент *format определяет строку, которая выводится на экран и может содержать специальные управляющие символы для вывода переменных. К примеру вот:
Думаю Вы меня поняли. Спасибо.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
04.06.2011, 12:16 | 5 |
Uklunok, va_arg в помощь.
1
|
04.06.2011, 13:52 | 6 | |||||
Сообщение было отмечено как решение
Решение
3
|
04.06.2011, 14:01 | 7 | |||||
А я вот по старинке привык, своими руками):
2
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
04.06.2011, 14:24 | 8 |
Думаю потому, что выводится не число, а указатель.
Впрочем, у меня этот код вообще не работает. GCC 4.5, Linux/x86_64
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
04.06.2011, 14:33 | 10 |
Но тип у него тогда зачем (int*)? Может приводить просто к int?
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
||||||
04.06.2011, 14:42 | 12 | |||||
А ещё более правильно тогда
Добавлено через 36 секунд Наверное дело в 64-битности.
0
|
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
|
|||||||||||
04.06.2011, 14:47 [ТС] | 15 | ||||||||||
Самое интересное, что программа выводит сообщение, хотя нет ни одной ф-ции printf(). Вы все меня не очень хорошо поняли. Во первых выводить сообщение никакого ни надо, и моя самодельная функция тоже не должна выводить сообщение. Тут получается: надо вытащить из библиотеки ф-цию printf() и скопировать её параметры в самодельную ф-цию. И соответственно, если непосредственно в программе есть такая строка:
Вот
0
|
04.06.2011, 14:55 | 16 |
Поскольку в функциями с переменным числом аргументов работать приходится не часто, то я, честно говоря, и не знал про va_list. А когда нужно было, то делал так, как показал выше.
Uklunok, т.е. ты хочешь влезть в код printf() ? Добавлено через 1 минуту Это просто пример, как реализовать функцию с переменным числом аргументов, она не обязательно должна что-то выводить.
0
|
04.06.2011, 15:10 | 17 | |||||
Так тоже самое все, только более опасное
0
|
04.06.2011, 15:23 | 18 |
Чтобы доставать аргументы для "..." нужно использовать va_arg. На каждой платформе этот интерфейс реализован по своему (в соответствии со своим ABI). Ибо на каждой платформе имеются свои правила передачи параметров
Добавлено через 3 минуты Такая постановка задачи честными способами практически не решается. Единственный с виду способ - это реализовать свою функцию под названием printf, которая будет вызывать "настоящий" printf и дополнительно делать свои пляски с бубном. Для вызова "настощего" printf'а можно воспользоваться vprintf'ом из поста #6 Ты лучше поясни, нафига тебе это нужно. Потому что есть подозрение, что у тебя есть постановка задачи, но ты пошёл её решать неверным путём
1
|
Kastaneda
|
04.06.2011, 15:27
#19
|
Не по теме:
0
|
Evg
|
04.06.2011, 15:28
Как перенести параметры из ф-ции printf() в самодельную
#20
|
0
|
04.06.2011, 15:28 | |
Форматы и параметры printf/scanf Как припаять PLS на самодельную плату Не могу понять как исправить ошибку Warning: printf() [function.printf]: Too few arguments in Z:\home\ksards.ru\www\id\1.php on line 76 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |