Как перенести на следующую строку в c
В длл на C++ в методе который формирует итоговую строчку char* использую символы: «\r\n» чтоб переводить каретку на новую строку.
При передачи через dllimport в проект на .net(C#) переход строк куда-то теряется, перевод строк не виден (((
Как быть?
Re: перевод каретки на новую строку
| От: | uzhas |
| Дата: | 24.03.11 15:03 |
| Оценка: |
Здравствуйте, Alexys, Вы писали:
A>В длл на C++ в методе который формирует итоговую строчку char* использую символы: «\r\n» чтоб переводить каретку на новую строку.
A>При передачи через dllimport в проект на .net(C#) переход строк куда-то теряется, перевод строк не виден (((
A>Как быть?
приведите пример кода, который формирует строчку
и покажите, как вы проверяете в .net, что перевод строк потерялся
что-то телепатия к вечеру не фурычит
зы: вообще-то, перевод каретки в строках обычно хранят в виде \n, при взаимодействии с файлами (виндоуз\линукс формат) там уже может возникнуть \r\n
Re[2]: перевод каретки на новую строку
| От: | Alexys |
| Дата: | 24.03.11 15:19 |
| Оценка: |
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, Alexys, Вы писали:
A>>В длл на C++ в методе который формирует итоговую строчку char* использую символы: «\r\n» чтоб переводить каретку на новую строку.
A>>При передачи через dllimport в проект на .net(C#) переход строк куда-то теряется, перевод строк не виден (((
A>>Как быть?
U>приведите пример кода, который формирует строчку
U>и покажите, как вы проверяете в .net, что перевод строк потерялся
U>что-то телепатия к вечеру не фурычит
U>зы: вообще-то, перевод каретки в строках обычно хранят в виде \n, при взаимодействии с файлами (виндоуз\линукс формат) там уже может возникнуть \r\n
В методе С++ делаю следующее (пример)
int GetData(char* DataOutput) < sprintf(DataOutput, "Привет!\r\nМир!"); return 0; >
метод в DLL для экспорта
#ifdef EXPORTS #define EXP(type) __declspec(dllexport) type #else #define EXP(type) __declspec(dllimport) type #endif extern "C" EXP(int) GetData(char* DataOutput);
На .net импортирую dllimport
[DllImport(pathDll, SetLastError = true)] public static extern int GetData(StringBuilder lpDataOutput);
Значение уже: и текстовое поле свойство Textbox.Text = «Привет!\nМир!»
А визуально текстовое поле показывает в одной строке с «квадратом»(непонятным символом), выделяю мышкой, вставлю сюда перенос сохраняется.
а визуально то почему так.
Re[3]: перевод каретки на новую строку
| От: | uzhas |
| Дата: | 24.03.11 15:24 |
| Оценка: |
Здравствуйте, Alexys, Вы писали:
A>Значение уже: и текстовое поле свойство Textbox.Text = «Привет!\nМир!»
A>А визуально текстовое поле показывает в одной строке с «квадратом»(непонятным символом), выделяю мышкой, вставлю сюда перенос сохраняется.
A>а визуально то почему так.
с трудом вас понимаю
попробуйте так:
A>Привет!
A>Мир!
алоха!
Re[3]: перевод каретки на новую строку
| От: | SaZ |
| Дата: | 24.03.11 15:34 |
| Оценка: |
Здравствуйте, Alexys, Вы писали:
A>Значение уже: и текстовое поле свойство Textbox.Text = «Привет!\nМир!»
A>А визуально текстовое поле показывает в одной строке с «квадратом»(непонятным символом), выделяю мышкой, вставлю сюда перенос сохраняется.
A>.
А у textbox’a multiline точно выставлен?
Re[3]: перевод каретки на новую строку
| От: | мыщъх | http://nezumi-lab.org |
| Дата: | 24.03.11 16:09 | |
| Оценка: |
Здравствуйте, Alexys, Вы писали:
A>Здравствуйте, uzhas, Вы писали:
U>>Здравствуйте, Alexys, Вы писали:
A>
A>int GetData(char* DataOutput) A>< A>sprintf(DataOutput, "Привет!\r\nМир!"); A>return 0; A>> A>
\r — это перевод в начало строки вообще-то, код 0Dh, \n — это перенос строки и в зависимости от может кодироваться как 0D 0A, так и 0Ah, \r\n под виндой дадут 0D 0D 0A, что поймет консоль при выводе на экран и некоторые текстовые редакторы/браузеры (без гарантий, впрочем), но в общем случае нас ждет непредсказуемое поведение.
если есть желание формировать сиволы переноса вручую, так и пишите «Привет!\x0D\x0AМир!»
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[3]: перевод каретки на новую строку
| От: | Alexys |
| Дата: | 24.03.11 20:25 |
| Оценка: |
проделал следующее
на .net написал:
TextBox.Text = «Привет!»+Environment.NewLine+»Мир!»;
дебаг подсветил значение tb.Text следующее: «Привет!\r\nМир!»
интерфейсно два слова в разных строках.
а если приходит строка от сишника, также дебаг подсвечивает «Привет!\r\nМир!»
а интерфейсно ВСЁ в одной строке с непонятным «квадратом» символом между ними.
Вот что ж такое (((( что за «азбука морзе».
Re[4]: перевод каретки на новую строку
| От: | BulatZiganshin |
| Дата: | 24.03.11 21:48 |
| Оценка: |
Здравствуйте, мыщъх, Вы писали:
М>\r — это перевод в начало строки вообще-то, код 0Dh, \n — это перенос строки и в зависимости от может кодироваться как 0D 0A, так и 0Ah,
это 0A. перекодирование происходит только при записи в файлы, открытые как текстовые
Люди, я люблю вас! Будьте бдительны.
Re[3]: перевод каретки на новую строку
| От: | MTimur |
| Дата: | 24.03.11 22:07 |
| Оценка: |
Здравствуйте, Alexys, Вы писали:
A>метод в DLL для экспорта
A>
A>int GetData(char* DataOutput); A>
A>На .net импортирую dllimport
A>
A>int GetData(StringBuilder lpDataOutput); A>
Никогда не работал с .Net, поэтому встречный вопрос, StringBuilder вместо char* — это нормально?
И еще, предполагаю, что в StringBuilder строка utf-16. Ошибаюсь?
Re[4]: перевод каретки на новую строку
| От: | MTimur |
| Дата: | 24.03.11 22:13 |
| Оценка: |
Your declaration needs a little tweaking. It should be:
[DllImport("engip11bridge.dll")] public static extern int string_modify([MarshalAs(UnmanagedType.LPStr)] StringBuilder testString);
This will make sure that the string is converted properly to an ASCII representation.
Re[4]: перевод каретки на новую строку
| От: | dilmah |
| Дата: | 24.03.11 22:13 |
| Оценка: |
М>если есть желание формировать сиволы переноса вручую, так и пишите «Привет!\x0D\x0AМир!»
я сомневаюсь, что ты прав. Преобразование \n в нечто более сложное происходит не на этапе формирования строки, а на этапе ее вывода в текстовый поток. Твой пример с «Привет!\x0D\x0AМир!» должен быть полностью эквивалентен «Привет!\r\nМир!» (за исключением систем с неаски кодировкой которой виндоуз не является).
Re[4]: перевод каретки на новую строку
| От: | Alexys |
| Дата: | 25.03.11 06:15 |
| Оценка: |
Здравствуйте, Alexys, Вы писали:
A>проделал следующее
A>на .net написал:
A>TextBox.Text = «Привет!»+Environment.NewLine+»Мир!»;
A>дебаг подсветил значение tb.Text следующее: «Привет!\r\nМир!»
A>интерфейсно два слова в разных строках.
A>а если приходит строка от сишника, также дебаг подсвечивает «Привет!\r\nМир!»
A>а интерфейсно ВСЁ в одной строке с непонятным «квадратом» символом между ними.
A>Вот что ж такое (((( что за «азбука морзе».
некоторое дополнение тут, в общем на сервере реализована веб служба, которая взаимодействует с dllimport. в веб службе все корректно получаем, а вот при передаче уже неудача.
http://rsdn.ru/forum/dotnet.web/4209278.1.aspx
Автор: Alexys
Дата: 25.03.11
Re: перевод каретки на новую строку
| От: | Кодёнок | |
| Дата: | 25.03.11 09:39 | |
| Оценка: | +1 | |
Здравствуйте, Alexys, Вы писали:
A>В длл на C++ в методе который формирует итоговую строчку char* использую символы: «\r\n» чтоб переводить каретку на новую строку.
Перевод на новую строку делает одиночный \n. \r это пережиток прошлого.
Re[2]: перевод каретки на новую строку
| От: | BulatZiganshin |
| Дата: | 25.03.11 14:23 |
| Оценка: |
Здравствуйте, Кодёнок, Вы писали:
Кё>Перевод на новую строку делает одиночный \n. \r это пережиток прошлого.
это зависит от окружения
Переход на новую строчку в файле (СИ)
Мне надо записывать в конец каждой строки файла символ. Так вот, как после записи переходить на следующую строчку файла?
Отслеживать
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
задан 22 апр 2017 в 14:26
133 1 1 золотой знак 1 1 серебряный знак 7 7 бронзовых знаков
Добавлять еще один символ к строке или заменять последний? Если заменять, то ничего делать не надо. После перезаписи строки просто читаете следующую. Если добавлять, то пишите все в новый файл, а потом переименуйте его в старый.
22 апр 2017 в 15:08
Нужно именно добавлять символ в конец строки. А без создания нового файла никак нельзя?
22 апр 2017 в 15:13
В принципе можно, но очень неудобно и нерационально.
22 апр 2017 в 16:34
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Вобщем, примерно так проще всего:
#include #include int main() < FILE * in = fopen("data","r"); FILE * out = fopen("data~","w"); if (in == NULL || out == NULL) < fprintf(stderr,"Error open file\n"); return 1; >char addSym = '$'; int c; while((c = fgetc(in)) != EOF) < if (c == '\n') fputc(addSym,out); fputc(c,out); >fclose(in); fclose(out); unlink("data"); rename("data~","data"); >
Отслеживать
ответ дан 22 апр 2017 в 16:56
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
Если текстовый файл уже существует, то читаешь построчно делая риплейс «\r\n» на «\r\n» и потом сохраняешь текст.
Отслеживать
ответ дан 22 апр 2017 в 17:00
Andrew Stop_RU_war_in_UA Andrew Stop_RU_war_in_UA
19k 6 6 золотых знаков 36 36 серебряных знаков 98 98 бронзовых знаков
- c
- файлы
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как перенести на следующую строку в c
Регистрация: 03.02.2011
Сообщений: 1
Как в С# перенести вывод на новую строку?
Всем привет. Помогите пожалуйста. Как в С# перенести вывод на новую строку?, \n не работает.
Белик Виталий 🙂
Регистрация: 23.07.2007
Сообщений: 57,792
Разве?
Ну допустим, а метод WriteLine подойдет?
I’m learning to live.
Регистрация: 10.04.2010
Сообщений: 2,665
Делается всё так.
Console.WriteLine("Текст\nЕщё текст");
Заметьте, должны быть двойные кавычки.
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| C++. Как перейти на новую строку | kostek | Помощь студентам | 5 | 27.11.2021 16:51 |
| Как перенести строку (команда?) | makar3000 | Общие вопросы Delphi | 2 | 30.12.2010 01:04 |
| Перенести текст на новую строку | VistaSV30 | Microsoft Office Access | 4 | 31.01.2010 08:45 |
| Как перенести формулу на другую строку | valerij | Microsoft Office Excel | 2 | 18.05.2009 00:44 |
| Перенести в новую строку только те слова, которые разделены одним пробелом. задача на паскаль | SashaPRO | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 22.12.2008 20:01 |
Перенос длинных строк в C

Как ни странно на С пишу давно, а проблема встретилась мне только сейчас .
В общем есть у меня объект String и я его инициализирую внутри кода:
NSString *a = *» какая то строка»;
Так вот — строка эта очень длинная при переносе ее на следующую строку, компилятор перестает ее понимать. Я предполагаю что нужно дописывать в строку какие то специальные символы, но я не знаю какие, гугл не помог.
Откликнитесь кто знает, очень уж неудобны будут макароны в коде
CRNBS
Статус: Offline
Реєстрація: 09.12.2005
Повідом.: 857
aa = «sdfasdgfadfg \
sfgsdfg asdfg»