2 / 2 / 1
Регистрация: 15.09.2011
Сообщений: 104
1

Траблы с функцией sprintf

20.08.2012, 15:37. Показов 5180. Ответов 7
Метки нет (Все метки)

Всем добрый день. У меня есть структура. После того как я забил все поля структуры мне нужно сформировать одну большую строку из этих полей, каждое поле которое разделено символом новой строки. Используя функцию sprintf получаю системные ошибки какие-то. Подскажите в чем дело? Полей очень много.
C++
1
2
3
sprintf(formal,"%s\\n%s\n%s\\n%s\\n и тд",
    SdpEx.s_name, SdpEx.OriginEx.username, SdpEx.OriginEx.unicast_address);
    printf(formal);//formal - строка содержащая атрибуты
Когда создаю строку из двух полей, все нормально, а дальше ошибки...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2012, 15:37
Ответы с готовыми решениями:

Передача массива символов в функцию strlen после создания его функцией sprintf
Если вводится 1 символ, выводится "8", 2 символа - "9". И так далее. Почему? Это нормально?...

Траблы с визуалкой и sql в чем траблы незнаю
Все работало нормально что визуалка что сам sql. а тут хз что за ошибка. Таже ошибка и в визуалке.

sprintf и %
wsprinfA(buff,"%dasda"); как сделать так, что бы этот код работал ? экранирование % не помогает...

sprintf
Вот код: sprintf(msg, "WX=%d WY=%d WZ=%d", WX,WY,WZ); //msg получается "МММ" sprintf(msg,...

7
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
20.08.2012, 16:15 2
Цитата Сообщение от 0xDC Посмотреть сообщение
Используя функцию sprintf получаю системные ошибки какие-то.
Когда создаю строку из двух полей, все нормально, а дальше ошибки...
Сейчас, подожди. Позвною знакомому экстрасенсу, он мне раскажет, какие у тебя ошибки, а потом уже решим вопрос.
Truth
Ну какие ошибки-то? Как мы угадаем :<

p.s Судя по твоей sprintf, ты формируешь строку из 4ех "%s", а передаешь в функции лишь 3 переменных.
0
~ Эврика! ~
1254 / 1003 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
20.08.2012, 16:19 3
Use the std::string, Luke.
0
2 / 2 / 1
Регистрация: 15.09.2011
Сообщений: 104
20.08.2012, 16:20  [ТС] 4
Цитата Сообщение от nexen Посмотреть сообщение
Сейчас, подожди. Позвною знакомому экстрасенсу, он мне раскажет, какие у тебя ошибки, а потом уже решим вопрос.
Truth
Ну какие ошибки-то? Как мы угадаем :<

p.s Судя по твоей sprintf, ты формируешь строку из 4ех "%s", а передаешь в функции лишь 3 переменных.
Unhandled exception at 0x1029984f (msvcr90d.dll) in XP4.exe: 0xC0000005: Access violation reading location 0x00000034.
Unhandled exception at 0x1029984f (msvcr90d.dll) in XP4.exe: 0xC0000005: Access violation reading location 0x00000034.

и еще куча. функции спринтф все равно сколько лексем в одну строку соединять, или есть какой-нибудь параметр, указывающий количество?
0
228 / 49 / 7
Регистрация: 13.03.2012
Сообщений: 453
Записей в блоге: 7
20.08.2012, 16:23 5
VASYA\nPETYA
212342341234\n‹р‹Жи.ґ\n и тд
это выход сейчас. при отсутствие переданного последнего параметра цепляет мусор, экранированные символы \n попадают в текст.

для правильного выхода надо так

C++
1
2
sprintf(formal,"%s\n%s\n%s\nи тд",
    SdpEx.s_name, SdpEx.OriginEx.username, SdpEx.OriginEx.unicast_address);
и тогда выйдет

VASYA
PETYA
212342341234
и тд
0
Заблокирован
Автор FAQ
20.08.2012, 16:31 6
0xDC, что из себя представляет твоя formal - есть уверенность что под неё выделен буффер достаточной длинны???Также бросается в глаза вот что
Цитата Сообщение от 0xDC Посмотреть сообщение
"%s\\n%s\n%s\\n%s\\n
вконце первой строки есть \ причём скорее всего вот эта связка \\ воспримется как символ '\' в строке а \n добавит с formal перевод каретки.
0
Заблокирован
Автор FAQ
20.08.2012, 16:36 7
Короче вот работающий код, а там уже дело за разработчиком
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main()
{
    char formal[128] = {0};
    sprintf
    (
        formal,
        "%s\n%s\n%s\n",
        "String1", "String2", "String3"
    );
    printf("%s",formal);
    return 0;
}
http://liveworkspace.org/code/... 94e45894da
String1
String2
String3
Миниатюры
Траблы с функцией sprintf  
0
2 / 2 / 1
Регистрация: 15.09.2011
Сообщений: 104
20.08.2012, 16:50  [ТС] 8
Всем Огромное спасибо! Но проблемы была не в блокирующих символах и еще что-то там. Все намного проще. В структуре поля не только типа Char есть еще unsigned int, в Си везде нужно прописывать спецификаторы преобразования, то есть %s\\n %u\\n .Всем спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2012, 16:50

Sprintf
Первый круг проходит спокойно, а на втором ошибку выбивает, но я не могу найти где я ошибся: char...

засада со sprintf
int i; char *str1; char *str2 str1 = &quot;OBS&quot;; str2 = &quot;DEF&quot;; i = strlen(str1); sprymtf(&amp;str1,...

sprintf программный.
штатный sprymtf сжирает сразу 25кб флеша. Кто нибудь знает как с использованием меньшей памяти...

Sprintf не работает
Почему при запуске программа вырубается ? проблема где-то в sprintf #include &lt;iostream&gt;...


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

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

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