Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Fon Eberkopff
3 / 3 / 2
Регистрация: 06.02.2015
Сообщений: 21
Записей в блоге: 29
1

Выяснить экспериментально, что происходит при передаче в функцию printf строки

07.02.2015, 12:38. Просмотров 1026. Ответов 2
Метки нет (Все метки)

Упражнение 1.2. Попытайтесь выяснить экспериментально, что происходит при передаче в функцию printf строки, содержащей управляющую последовательность \с, где с - некий символ, не входящий в вышеперечисленные комбинации.

----
Добавил известную управляющую последовательность \n и неизвестную управляющую последовательность \с.
В итоге GCC ругается на неизвестную escape sequence, а вот сам символ 'с' - напечатал.

fe@ub1410:~/c/KR$ gcc kr_ex1_2.c -o kr_ex1_2 && ./kr_ex1_2
kr_ex1_2.c: In function ‘main’:
kr_ex1_2.c:5:9: warning: unknown escape sequence: '\c'
printf("Hello \c world\n");
^
Hello c world
fe@ub1410:~/c/KR$

Учту на будущее и буду пользоваться только известными управляющими последовательностями...)
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2015, 12:38
Ответы с готовыми решениями:

Что происходит с копией при передаче по значению результата функии?
Добрый день! Размышляю над такой вещью: При возвращении переменной, как результата работы функции,...

Получение значений функцией (что происходит при передаче аргумента по значению/ссылке)
Разъясните, пожалуйста, пояснение в скобках

Неправильная длина строки при передаче в функцию
странная работа компилятора(строки) в кратце проблема выглядет так определяем переменную...

При передаче строки в функцию возникает string subscript out of range
Нужно было реализовать алгоритм сортировочной станции в обратную польскую нотацию с последующим...

При передаче значения из таймера происходит мигание label
Добрый день! На главной форме есть таймер который передает дынные на другой таймер в компонент...

2
Jewbacabra
Эксперт PHP
3971 / 3265 / 1416
Регистрация: 24.04.2014
Сообщений: 9,880
07.02.2015, 14:24 2
Лучший ответ Сообщение было отмечено Fon Eberkopff как решение

Решение

Fon Eberkopff,
C
1
printf("Hello \\c world\n");
0
Evg
Эксперт CАвтор FAQ
20071 / 7637 / 585
Регистрация: 30.03.2009
Сообщений: 21,364
Записей в блоге: 30
08.02.2015, 11:34 3
Fon Eberkopff, ты неправильно провёл эксперимент, да и задача поставлена некорректно

Тут есть два уровня раскрытия:

1. Уровень языка программирования
2. Уровень функции printf

Когда ты пишешь printf ("\t"); то в реальности последовательность из двух символов \t превращается в символ табуляции с кодом 008 на этапе компиляции самим компилятором. Во время исполнения в printf попадает строка, состоящая из одного символа, а не из двух (как это написано в программе на си). А внутри printf'а управляющими последовательностями являются всякие %d, %s и т.п. Никакого разбора символов \ в printf'е не делается
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2015, 11:34

Можете расписать, что происходит при выполнении каждой строки
Написал программу, вроде бы понимаю что к чему, но хотелось бы прочитать пояснения, а то мало ли ...

Ошибка при передаче в функцию
Хочу передать в функцию строку и там ее заполнить, подчеркивает void karta(MyStruct s.karta,int...

Порча указателя при передаче в функцию
Добрый вечер. Проблема такая - при передаче в функцию структуры, полем которой является...


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

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

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