Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 81, средняя оценка - 4.83
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
#1

Как перенести параметры из ф-ции printf() в самодельную - C++

04.06.2011, 09:22. Просмотров 10196. Ответов 103
Метки нет (Все метки)

Ребят, подскажите как решить задачу.
Нужно перенести параметры функции printf() в самодельную ф-цию myfunk(). При условии если булева переменная Х==1. Если не равна 1, то не переносить.
Задача осложняется тем, что число параметров ф-ции может быть переменным.
Подскажите пожалуйста, буду очень признателен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
05.06.2011, 12:50     Как перенести параметры из ф-ции printf() в самодельную #41
Uklunok, Хех. А это смотря какая строка. У printf довольно много спецификаторов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 12:54     Как перенести параметры из ф-ции printf() в самодельную #42
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Держи, я нагуглил это за тебя. Для embedded software. Есть вариант с stdarg и без stdarg. Я бы на твоем месте взял бы с stdarg.
http://www.menie.org/georges/embedded/. Там есть ссылка и на реализацию, поддерживающую плавающие числа.
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
05.06.2011, 12:58  [ТС]     Как перенести параметры из ф-ции printf() в самодельную #43
Огоого сколько тут кодаО_о
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 12:59     Как перенести параметры из ф-ции printf() в самодельную #44
Uklunok, вот и разбирайся
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
05.06.2011, 13:02  [ТС]     Как перенести параметры из ф-ции printf() в самодельную #45
static int print(char **out, const char *format, va_list args ) - эта ф-ция получается будет вместо vprintf()?
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 13:03     Как перенести параметры из ф-ции printf() в самодельную #46
Uklunok, там vprintf вообще никаким боком... А хотя да, можно и так сказать. Только не "вместо".
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
05.06.2011, 13:05  [ТС]     Как перенести параметры из ф-ции printf() в самодельную #47
а если я подключаю заголовок #include <stdio.h>
то билдер ругается на эту строку:
extern int putchar(int c);
[C++ Error] Unit1.c(6): E2040 Declaration terminated incorrectly

Добавлено через 56 секунд
И про код господина fasked можно забыть чтоли? но он такой хороший
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 13:09     Как перенести параметры из ф-ции printf() в самодельную #48
Uklunok, если у тебя нету vprintf - то да, можно забыть.
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
05.06.2011, 13:13  [ТС]     Как перенести параметры из ф-ции printf() в самодельную #49
Ну здесь же всеровно сообщения выводятся через printf()....
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 13:14     Как перенести параметры из ф-ции printf() в самодельную #50
Цитата Сообщение от Uklunok Посмотреть сообщение
а если я подключаю заголовок #include <stdio.h>
то билдер ругается на эту строку:
extern int putchar(int c);
А ты его не подключай.

Uklunok, там функция printf - своя, а не стандартная.
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
05.06.2011, 13:16  [ТС]     Как перенести параметры из ф-ции printf() в самодельную #51
ААААА, всё понял, поменял название ф-ции на printf1(), и всеровно сообщения выводятся, нормально, значит можно полностью этот код и вставить.
Не подскажите в билдере ф-цию чтобы консоль не закрывалась, типа getch(), хочу глянуть достоверные данные выводятся...
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 13:17     Как перенести параметры из ф-ции printf() в самодельную #52
system("pause"); из stdlib.h
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
05.06.2011, 13:30  [ТС]     Как перенести параметры из ф-ции printf() в самодельную #53
Nameless One, Спасибо большое. Чтобы я без тебя делал. Выручил очень.
Сейчас попытаюсь вставить код в проект для МК

Добавлено через 8 минут
А как быть если #include "stdio.h" всё-таки нужен?
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 13:32     Как перенести параметры из ф-ции printf() в самодельную #54
Uklunok, тогда нужно сделать так, чтобы имена объявляемых тобой функций не конфликтовали с именами функций из stdio.h
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
05.06.2011, 13:33  [ТС]     Как перенести параметры из ф-ции printf() в самодельную #55
Просто эта ф-ция
stdioAttach(hUart); без не её похоже нельзя
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 13:35     Как перенести параметры из ф-ции printf() в самодельную #56
Uklunok, какой у нее прототип?
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
05.06.2011, 13:48  [ТС]     Как перенести параметры из ф-ции printf() в самодельную #57
Ок, получилось, щас буду пробовать

Добавлено через 1 минуту
Цитата Сообщение от Nameless One Посмотреть сообщение
Uklunok, какой у нее прототип?
Если интересно, то вот:

Syntax
int stdioAttach(VOS_HANDLE h)

Description
Attaches an I/O interface handle stdio streams, stdin, stdout and stderr. All three streams are attached to the same driver.
Cannot be used with a handle to the FAT file system driver or any driver that requires a structure to be passed in it's read() or write() handlers.

Parameters
h
Handle for stream operations.

Return Value
Always returns zero.

Добавлено через 7 минут
Плохи дела, компилятор виснет
Vinc.exe failed with return code 3221225477
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 13:50     Как перенести параметры из ф-ции printf() в самодельную #58
если тебе нужна из stdio.h только эта функция, то напиши "extern int stdioAttach(VOS_HANDLE h);" и не подключай stdio.h

Добавлено через 28 секунд
Uklunok, а ошибок он никаких не пишет?
Uklunok
3 / 3 / 0
Регистрация: 08.05.2010
Сообщений: 135
05.06.2011, 13:54  [ТС]     Как перенести параметры из ф-ции printf() в самодельную #59
ругается на эту строку:
C
1
extern int my_putchar(int c);
[VinC.exe] : src\Runtime.c line 45: (error) C1404 too many types in declaration
типа двумя типами инициализирована ф-ция

Добавлено через 2 минуты
убрал int вроде скомпилил без ошибок, ща остальные ф-ции добавлю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2011, 13:56     Как перенести параметры из ф-ции printf() в самодельную
Еще ссылки по теме:

Чем ::printf предпочтительнее printf? C++
Как в цикле увеличить отступ в Printf C++
C++ Параметры printf
Как записать printf в переменную? C++
Как строку записать через printf C++

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5761 / 3410 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
05.06.2011, 13:56     Как перенести параметры из ф-ции printf() в самодельную #60
Uklunok, попробуй убрать extern, а int оставь.
Yandex
Объявления
05.06.2011, 13:56     Как перенести параметры из ф-ции printf() в самодельную
Ответ Создать тему
Опции темы

Текущее время: 06:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru