powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / вопрос по возврату каретки
21 сообщений из 21, страница 1 из 1
вопрос по возврату каретки
    #33542856
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как должен работать возврат каретки?

например в винде

сишный код
printf("hello\rddd");

печатает ddd

а скриптовые - perl,tcl,python,gawk
печатают dddlo

казалось бы - скрипты работают логично а C затирает предыдущий вывод

как объяснить сей эФФект?
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33542881
CrLf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
интересно - в C все работает нормально если в конце строки есть \n

похоже поэтому и интерпреатторы нормально - по умолчанию они завершают строку
а если в perl не писать \n то тоже символы стирает.
В чем причина?
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33542896
CrLf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
терминал...
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33544594
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьми другой С.
Если у тебя "hello\rddd" возвращает один только "ddd", то у тебя кривой C-компилятор и кривые библиотеки к нему.
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33544910
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl ты не прав

во-первых - я пробовал на разных компиляторах и в разных ОС.
А во-вторых - это действительно терминал:

если перенаправить hello\rddd в файл : ./a.out > file.txt

то в файле будет dddlo если просматривать скажем редактором vi
а если сделать cat file.txt - то будет именно ddd

В файле - порядок
следовательно, проблема не в C или его либах, а в настройках терминала
и особенностях вывода (в частности, stdio printf, или cat)
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33544925
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrLFWhite Owl ты не правЯ прав :) Просто я никак не мог предположить, что человек берется изучать служебные символы на ненастроенном компе.

CrLFто в файле будет dddlo если просматривать скажем редактором vi
а если сделать cat file.txt - то будет именно dddУгу... при этом не надо забывать что vi самостоятельно обрабатывает служебные символы, а cat отдает все символы из файла как поток на обработку getty или что там у тебя стоит в качестве драйвера консоли.
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33544942
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЯ прав :) Просто я никак не мог предположить, что человек берется изучать служебные символы на ненастроенном компе.

в топике собственно указывалось, что начальные эксперименты проводились в винде. Не помню, чтобы cmd.exe надо было как-то правильно настраивать :-)
Хотя готов послушать - какой же в винде должен быть $TERM и как работать в винде с termcap :-)
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33544944
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
особенно после того, как я же и написал, что проблема в терминале :-)
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33544949
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да кстати интересно - запустил сейчас дома в XP - выводит dddlo, то есть все нормально

просто командные интерпретаторы отличаются в работе ввода-вывода у W2k и XP значит.
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33544962
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каком месте говорилось про винды простите? Вот использование типичных юниксовых вещей вижу, ни одного указания на винды не вижу.

На W2K команда printf("12345\r678") печатает 67845. Проверено на BCC 5.5, VC6, VC 2003. Все делали Win32 Console Application.
Какой компилятор ты использовал? MinGW под Cygwin'ом?
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33544967
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот моя цитата

CrLFнапример в винде

сишный код
printf("hello\rddd");

печатает ddd

вообще я пробовал в винде через gcc и Visual C++ 5.0
Как Win32, конечно.

а сейчас ваще шизую. С XP

посмотри:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
main()
{
        char s[ 40 ];
        int i;
      
        memset(s, 0 ,sizeof(s));
        strcpy(s,"hello\rddd");
       


        for(i= 0 ;i<=strlen(s);i++)
        {
         _write( 1 ,&s[i], 1 );
         }

}

такой код у них печатает вообще "dddаo" но "а" при этом совсем не "а" :-)
что видно в файлике. Кракозябра там как надо. Просто у них так преобразует.
С мастдаей все ясно.

А кстати как надо похимичить с unix чтоб printf("hello\rddd")
вывелся не удаляя символы? Я поигрался - терминалы разные пробовал, но не помогает. Замутить с termcap что-то? Как настроить?
Все остальнгл работает нормально (текстовые проги, vi и т.п.)
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33547390
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrLFа сейчас ваще шизую. С XPДействительно шизуешь. Посмотри внимательнее на свое условие цикла. Ты пытаешься печать не только строку, но и нулевой символ ограничивающий строку. Естественно что там у тебя появляются кракозябры. Посмотри в своем шрифте что стоит на месте нулевого символа и увидишь свою кракозябру.

CrLFС мастдаей все ясно.Да, да... конечно. Именно мастдай виноват в том, что ты не умеешь со строками работать.

CrLFА кстати как надо похимичить с unix чтоб printf("hello\rddd")
вывелся не удаляя символы?
Не знаю. У меня \r перебрасывает курсор на начало строки ничего не затирая... На всех доступных мне ОС и консолях :)
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33547457
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что вы в самом деле, как не знаю кто! Просто там приглашение командной строки печатается сразу после ddd. Это приглашение и затирает lo. Затирает интерпретатор команд, а не терминал.
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33547472
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkSquidНу что вы в самом деле, как не знаю кто! Просто там приглашение командной строки печатается сразу после ddd. Это приглашение и затирает lo. Затирает интерпретатор команд, а не терминал.В виндах? Тамошний интерпретатор автоматически делает \r\n.
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33547637
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так с третьего поста ясно, что не винды.

А в XP - нормально dddаo печатает
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33547723
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl да, со строкой я маху дал. все нормально если i<=strlen(s)

и все-таки printf("hello\rddd"); в W2k на VC 5.0 работает криво.

и еще - ты не знаешь как все-таки настроить терминал в юнихе чтобы правильно работало?
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33547778
Фотография DarkSquid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
export PS1="\n$PS1"
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33547781
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrLFи все-таки printf("hello\rddd"); в W2k на VC 5.0 работает криво.Вот мы наконец и пришли к тому с чего начинали :)
"у тебя кривой C-компилятор и кривые библиотеки к нему."

CrLFи еще - ты не знаешь как все-таки настроить терминал в юнихе чтобы правильно работало?Знаю.
Но я не знаю какой юникс у тебя и какой у твоего юникса терминал.
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33547803
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор"у тебя кривой C-компилятор и кривые библиотеки к нему."

не хочу быть назойливым, но в XP тот же компилятор - и все хорошо.

а по поводу unix - ты просто запость свой termcap и терминал
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33547804
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пять же - gcc так же работал, так что на компилятор как-то трудно свалить
...
Рейтинг: 0 / 0
вопрос по возврату каретки
    #33548059
CrLF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос снят, разобрался почему
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / вопрос по возврату каретки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]