Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неправильный вывод строки 
:(
    Опции темы
GQU
Дата 4.9.2015, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Код

#include "stdio.h"
#include "stdlib.h"

void main(){
    char string[] = { 'P', 'e', 'r', '4', 'u', 'K', '!', '\x0a', '\x0' };
    printf("%s", string);
    system("pause");
};

Почему надпись Press any key то continue с новой строки с крайнего левого положения, возврата каретки же нет?
PM MAIL   Вверх
volatile
Дата 4.9.2015, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(GQU @  4.9.2015,  12:18 Найти цитируемый пост)
'\x0a'

Это есть синоним '\n'
Разницы нет как писать.
Это одно и то же.

Добавлено через 7 минут и 50 секунд
добавлю, что возможно есть какие-то экзотические системы где это не синоним.
По крайней мере в win, и linux это синонимы.



PM MAIL   Вверх
GQU
Дата 4.9.2015, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Цитата

Это есть синоним '\n'

\n это 2 символа, а '\x0a' один
если я запишу в текстовый файл \n и '\x0a', разные данные же будут 

Это сообщение отредактировал(а) GQU - 4.9.2015, 13:06
PM MAIL   Вверх
volatile
Дата 4.9.2015, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(GQU @  4.9.2015,  12:59 Найти цитируемый пост)
n это 2 символа, а '\x0a' один

почему не 4?
'\x0a'  - 4 символа  smile

Добавлено через 56 секунд
GQU, \n - Это один символ!
PM MAIL   Вверх
GQU
Дата 4.9.2015, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Цитата

'\x0a'  - 4 символа 

1 символ под номером 0, а \n 10 И 13
если \n и '\x0a', это одно и тоже, зачем тогда возврат каретки?

Это сообщение отредактировал(а) GQU - 4.9.2015, 13:13
PM MAIL   Вверх
volatile
Дата 4.9.2015, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(GQU @  4.9.2015,  13:09 Найти цитируемый пост)
зачем тогда возврат каретки?

Возврат каретки - это из другой оперы совсем.
Его добавляет CRT, при операциях вывода.

Причем только в виндовс, (в линукс этого нет)
Почему?
так исторически сложилось...   smile

Добавлено через 2 минуты и 56 секунд
а то как вы его написали '\n' или '\x0a'
CRT вообще не знает. 

PM MAIL   Вверх
GQU
Дата 4.9.2015, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 13.2.2011

Репутация: нет
Всего: нет



Цитата

Возврат каретки - это из другой оперы совсем.
Его добавляет CRT, при операциях вывода.

так в текстовых файлах 10 и 13 переход!(CRT сейчас нет, а 10 13 все равно используют)
если я запишу в текстовый файл \n и '\x0a', разные данные  будут?
Цитата

а то как вы его написали '\n' или '\x0a'
CRT вообще не знает. 

\n компилятором переведется в '\x0a'(как то так, а потом в  единицы нолики)

Это сообщение отредактировал(а) GQU - 4.9.2015, 13:29
PM MAIL   Вверх
math64
Дата 4.9.2015, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Как в Вашем предыдущем вопросе про чтение, 0D выкидывается, так и при выводе 0D автоматически добавляется. Но даже если Вы будете выводить в бинарном режиме, ОС может сама добавить возврат каретки и перевод строки перед выводом " Press any key tо continue".
Чтобы не было таких коллизий, ждите нажатия сами в своей программе, например с помощью getchar();
PM   Вверх
volatile
Дата 4.9.2015, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(GQU @  4.9.2015,  13:22 Найти цитируемый пост)
CRT сейчас нет

CRT - это C Run Time, как это нету?

Цитата(GQU @  4.9.2015,  13:22 Найти цитируемый пост)
если я запишу в текстовый файл \n и '\x0a', разные данные  будут?

Я вам уже ответил
Цитата(volatile @  4.9.2015,  12:47 Найти цитируемый пост)
Разницы нет как писать.
Это одно и то же.


Цитата(GQU @  4.9.2015,  13:22 Найти цитируемый пост)
\n компилятором переведется в '\x0a'

Да, именно

А расширить его до \r\n, будет уже CRT, во время исполнения. Которая понятия не имеет, что вы там писали до компилляции.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.