Как вывести кавычки в c
Кавычки, ограничивающие строки с обеих сторон, служат для предотвращения интерпретации специальных символов, которые могут находиться в строке. (Символ называется «специальным», если он несет дополнительную смысловую нагрузку, например символ шаблона — * .)
bash$ ls -l [Vv]* bash$ ls -l '[Vv]*' ls: [Vv]*: No such file or directory
Некоторые программы и утилиты могут вызываться с дополнительными параметрами, содержащими специальными символы, поэтому очень важно предотвратить интерпретацию передаваемых параметров командной оболочкой, позволяя сделать это вызываемой программой.
bash$ grep '[Пп]ервая' *.txt file1.txt:Это первая строка в file1.txt. file2.txt:Это Первая строка в file2.txt.
Примечательно, что "не окавыченный" вариант команды grep [Пп]ервая *.txt будет правильно исполняться в Bash, но не в tcsh.
Двойные кавычки могут быть использованы для предотвращения разбиения строки на слова. [2] Заключение строки в кавычки приводит к тому, что она передается как один аргумент, даже если она содержит пробельные символы - разделители.
variable1="a variable containing five words" COMMAND This is $variable1 # Исполнение COMMAND с 7 входными аргументами: # "This" "is" "a" "variable" "containing" "five" "words" COMMAND "This is $variable1" # Исполнение COMMAND с одним входным аргументом: # "This is a variable containing five words" variable2="" # Пустая переменная. COMMAND $variable2 $variable2 $variable2 # Исполнение COMMAND без аргументов. COMMAND "$variable2" "$variable2" "$variable2" # Исполнение COMMAND с 3 "пустыми" аргументами. COMMAND "$variable2 $variable2 $variable2" # Исполнение COMMAND с 1 аргументом (и 2 пробелами). # Спасибо S.C.
Заключение в кавычки аргументов команды echo необходимо только в том случае, когда разбиение на отдельные слова сопряжено с определенными трудностями.
Пример 5-1. Вывод "причудливых" переменных
#!/bin/bash # weirdvars.sh: Вывод "причудливых" переменных var="'(]\\<>\$\"" echo $var # '(]\<>$" echo "$var" # '(]\<>$" Никаких различий. echo IFS='\' echo $var # '(] <>$" \ символ-разделитель преобразован в пробел. echo "$var" # '(]\<>$" # Примеры выше предоставлены S.C. exit 0
Одиночные кавычки ( ' ' ) схожи по своему действию с двойными кавычками, только не допускают обращение к переменным, поскольку специальный символ "$" внутри одинарных кавычек воспринимается как обычный символ. Внутри одиночных кавычек, любой специальный символ, за исключением ' , интерпретируется как простой символ. Одиночные кавычки ( "строгие, или полные кавычки" ) следует рассматривать как более строгий вариант чем двойные кавычки ( "нестрогие, или неполные кавычки" ).
Поскольку внутри одиночных кавычек даже экранирующий ( \ ) символ воспринимается как обычный символ, попытка вывести одиночную кавычку внутри строки, ограниченной одинарными кавычками, не даст желаемого результата.
echo "Why can't I write 's between single quotes" echo # Обходной метод. echo 'Why can'\''t I write '"'"'s between single quotes' # |-------| |----------| |-----------------------| # Три строки, ограниченных одинарными кавычками, # и экранированные одиночные кавычки между ними. # Пример любезно предоставлен Stephane Chazelas.
Экранирование -- это способ заключения в кавычки одиночного символа. Экранирующий ( escape ) символ ( \ ) сообщает интерпретатору, что следующий за ним символ должен восприниматься как обычный символ.
С отдельными командами и утилитами, такими как echo и sed, экранирующий символ может применяться для получения обратного эффекта - когда обычные символы при экранировании приобретают специальное значение.
Специальное назначение некоторых экранированных символов
используемых совместно с echo и sed \n
перевод строки (новая строка)
ASCII-символ с кодом 0xx в восьмеричном виде)
Пример 5-2. Экранированные символы
#!/bin/bash # escaped.sh: экранированные символы echo; echo echo "\v\v\v\v" # Вывод последовательности символов \v\v\v\v. # Для вывода экранированных символов следует использовать ключ -e. echo "=============" echo "ВЕРТИКАЛЬНАЯ ТАБУЛЯЦИЯ" echo -e "\v\v\v\v" # Вывод 4-х вертикальных табуляций. echo "==============" echo "КАВЫЧКИ" echo -e "\042" # Выводит символ " (кавычки с восьмеричным кодом ASCII 42). echo "==============" # Конструкция $'\X' делает использование ключа -e необязательным. echo; echo "НОВАЯ СТРОКА И ЗВОНОК" echo $'\n' # Перевод строки. echo $'\a' # Звонок (сигнал). echo "===============" echo "КАВЫЧКИ" # Bash версии 2 и выше допускает использование конструкции $'\nnn'. # Обратите внимание: здесь под '\nnn' подразумевается восьмеричное значение. echo $'\t \042 \t' # Кавычки (") окруженные табуляцией. # В конструкции $'\xhhh' допускается использовать и шестнадцатеричные значения. echo $'\t \x22 \t' # Кавычки (") окруженные табуляцией. # Спасибо Greg Keraunen, за это примечание. # Ранние версии Bash допускали употребление конструкции в виде '\x022'. echo "===============" echo # Запись ASCII-символов в переменную. # ---------------------------------------- quote=$'\042' # запись символа " в переменную. echo "$quote Эта часть строки ограничена кавычками, $quote а эта -- нет." echo # Конкатенация ASCII-символов в переменную. triple_underline=$'\137\137\137' # 137 -- это восьмеричный код символа '_'. echo "$triple_underline ПОДЧЕРКИВАНИЕ $triple_underline" echo ABC=$'\101\102\103\010' # 101, 102, 103 это A, B и C соответственно. echo $ABC echo; echo escape=$'\033' # 033 -- восьмеричный код экранирующего символа. echo "\"escape\" выводится как $escape" # вывод отсутствует. echo; echo exit 0
echo "Привет" # Привет echo "Он сказал: \"Привет\"." # Он сказал: "Привет".
символ доллара (если за комбинацией символов \$ следует имя переменной, то она не будет разыменована)
echo "\$variable01" # выведет $variable01
echo "\\" # выведет \
# Простое экранирование и кавычки echo \z # z echo \\z # \z echo '\z' # \z echo '\\z' # \\z echo "\z" # \z echo "\\z" # \z # Подстановка команды echo `echo \z` # z echo `echo \\z` # z echo `echo \\\z` # \z echo `echo \\\\z` # \z echo `echo \\\\\\z` # \z echo `echo \\\\\\\z` # \\z echo `echo "\z"` # \z echo `echo "\\z"` # \z # Встроенный документ catОтдельные символы в строке, которая записывается в переменную, могут быть экранированы, исключение составляет сам экранирующий символ.
variable=\ echo "$variable" # Не работает - дает сообщение об ошибке: # test.sh: : command not found # В "чистом" виде экранирующий (escape) символ не может быть записан в переменную. # # Фактически, в данном примере, происходит экранирование символа перевода строки #+ в результате получается такая команда: variable=echo "$variable" #+ ошибочное присваивание variable=\ 23skidoo echo "$variable" # 23skidoo # Здесь все в порядке, поскольку вторая строка #+ является нормальным, с точки зрения присваивания, выражением. variable=\ # \^ За escape-символом следует пробел echo "$variable" # пробел variable=\\ echo "$variable" # \ variable=\\\ echo "$variable" # Не работает - сообщение об ошибке: # test.sh: \: command not found # # Первый escape-символ экранирует второй, а третий оказывается неэкранированным, #+ результат тот же, что и в первом примере. variable=\\\\ echo "$variable" # \\ # Второй и четвертый escape-символы экранированы. # Это нормально.Экранирование пробелов предотвращает разбиение списка аргументов командной строки на отдельные аргументы.
file_list="/bin/cat /bin/gzip /bin/more /usr/bin/less /usr/bin/emacs-20.7" # Список файлов как аргумент(ы) командной строки. # Добавить два файла в список и вывести список. ls -l /usr/X11R6/bin/xsetroot /sbin/dump $file_list echo "-------------------------------------------------------------------------" # Что произойдет, если экранировать пробелы в списке? ls -l /usr/X11R6/bin/xsetroot\ /sbin/dump\ $file_list # Ошибка: первые три файла будут "слиты" воедино # и переданы команде 'ls -l' как один аргумент # потому что два пробела, разделяющие аргументы (слова) -- экранированы.Кроме того, escape -символ позволяет писать многострочные команды. Обычно, каждая команда занимает одну строку, но escape -символ позволяет экранировать символ перевода строки , в результате чего одна команда может занимать несколько строк.
(cd /source/directory && tar cf - . ) | \ (cd /dest/directory && tar xpvf -) # Команда копирования дерева каталогов. # Разбита на две строки для большей удобочитаемости. # Альтернативный вариант: tar cf - -C /source/directory . | tar xpvf - -C /dest/directory # См. примечание ниже. # (Спасибо Stephane Chazelas.)Если строка сценария заканчивается символом создания конвейера | , то необходимость в применении символа \ , для экранирования перевода строки, отпадает. Тем не менее, считается хорошим тоном, всегда использовать символ "\" в конце промежуточных строк многострочных команд.
echo "foo bar" #foo #bar echo echo 'foo bar' # Никаких различий. #foo #bar echo echo foo\ bar # Перевод строки экранирован. #foobar echo echo "foo\ bar" # Внутри "нестрогих" кавычек символ "\" интерпретируется как экранирующий. #foobar echo echo 'foo\ bar' # В "строгих" кавычках обратный слэш воспринимается как обычный символ. #foo\ #bar # Примеры предложены Stephane Chazelas.Примечания
Не менее любопытно поведение символа "\" , употребляемого внутри двойных кавычек.
bash$ echo hello\! hello! bash$ echo "hello\!" hello\! bash$ echo -e x\ty xty bash$ echo -e "x\ty" x y(Спасибо Wayne Pollock за пояснения.)
"Разбиение на слова" , в данном случае это означает разделение строки символов на некоторое число аргументов.
| Назад | К началу | Вперед |
| Специальные типы переменных | Наверх | Завершение и код завершения |
Строки и символы в Си Плюс Плюс

В отличие от Паскаля, где и строки и символы заключаются в одинарные кавычки, в С++, как всегда, всё более интересно. Строки в С++ заключаются в двойные кавычки, а вот символы – в одинарные.
Эту ошибку тоже совершают практически все новички – то есть пытаются заключить символ в двойные кавычки, или строку - в одинарные.
Эту ошибку нельзя назвать очень страшной – компилятор её легко находит и выдаёт сообщение. Однако знать об этом надо.
Вот пример программы, где показано, как можно записывать символы и строки в исходном коде, а как нельзя:
#include #include using namespace std; int main(int argc, char *argv[]) < char Sym; cout Sym = "A"; //А так нельзя system("PAUSE"); return EXIT_SUCCESS; >
А теперь ещё один пример:
char ch1; int ch2; ch1 = 'A'; ch2 = 'A'; coutВ результате программа выведет на экран следующее сообщение:
ASCII-code of symbol А = 65
То есть мы объявляем две переменных разного типа. И в каждую из этих переменных помещаем один и тот же символ. Однако на экран в одном случае выводится буква, а в другом - число (ASCII-код этой буквы).
А всё потому, что в первом случае переменная имеет тип char (который является одновременно целочисленным и символьным), а во втором - переменная имеет «чисто» числовой тип данных.
При этом в математических выражениях с типом char результат будет целочисленным, а при выводе на экран - символьным.
Вот такая путаница. И это не единственная «заморочка» С++.
Символы в программе можно записать двумя способами.
‘A’ - символ в одинарных кавычках. 65 - код символа (обычное число). Формат записи числа может быть любым, принятым в С++ (см. раздел «3.1.1.1. Целые типы» в книге Основы С++).
То есть вместо нашего кода:
ch1 = 'A'; ch2 = 'A';с таким же успехом можно записать:
ch1 = 65; ch2 = 65;Ещё один момент: как известно, ASCII-код - это набор числовых кодов и сопоставленных с ними символов в диапазоне 0. 255. Однако тип char имеет диапазон -128. 127.
И если вместо английской буквы А в нашем примере мы укажем русскую букву я, вот так:
то на экран будет выведена строка:
ASCII-code of symbol я = -17
Но ведь такого кода в таблице ASCII нет!
Ну нет и нет. Это уже проблемы тех, кто создаёт компиляторы С++. Ну а если вам надо, чтобы программа выводила правильный код, то придётся сделать так:
Попробуйте сами понять - почему.
ПРИМЕЧАНИЕ
Символ ‘я’ будет выводиться на экран и код его будет равен -17 только в том случае, если у вас русифицированная версия компилятора С++. О русификации компилятора Dev-C++ рассказано в книге Основы С++.Возможно, у вас возникнет вопрос, как же всё-таки вывести на экран не символ, а его код. То есть числовое значение, которое хранится в переменной типа char. Сделать это можно так:
char c = 'A'; coutВ этом примере на экран будет выведена не буква А, а число 65. Подробнее о преобразовании типов как-нибудь в другой раз.
Аналогично можно вывести на экран символ, зная его ASCII-код:
Практическое руководство. Добавление кавычек в строку (Windows Forms)
Бывает, что в строку текста нужно вставить кавычки (" "). Например:
Она сказала: "Ты этого заслуживаешь!"
Кроме того, можно использовать поле Quote в качестве константы.
Вставка кавычек в строку в коде
- В Visual Basic вставьте двойные кавычки в строку как внедренную кавычку. В Visual C# и Visual C++ вставьте escape-последовательность \" как внедренную кавычку. Например, для создания представленной выше строки используйте следующий код.
Private Sub InsertQuote() TextBox1.Text = "She said, ""You deserve a treat!"" " End Subprivate void InsertQuote()private: void InsertQuote() < textBox1->Text = "She said, \"You deserve a treat!\" "; >Private Sub InsertAscii() TextBox1.Text = "She said, " & Chr(34) & "You deserve a treat!" & Chr(34) End Subprivate void InsertAscii()Примечание. В данном примере использовать \u0022 нельзя, поскольку нельзя использовать универсальное имя символа, обозначающее символ в базовом наборе символов. В противном случае вы получите C3851. Дополнительные сведения см. в разделе Ошибка компилятора C3851.
Const quote As String = """" TextBox1.Text = "She said, " & quote & "You deserve a treat!" & quoteconst string quote = "\""; textBox1.Text = "She said, " + quote + "You deserve a treat!"+ quote ;const String^ quote = "\""; textBox1->Text = String::Concat("She said, ", const_cast(quote), "You deserve a treat!", const_cast(quote));См. также
- TextBox
- Quote
- Общие сведения об элементе управления TextBox
- Практическое руководство. Управление положением курсора в элементе управления TextBox в Windows Forms
- Практическое руководство. Создание текстового поля для ввода пароля с помощью элемента управления TextBox в Windows Forms
- Практическое руководство. Создание текстового поля только для чтения
- Практическое руководство. Выделение текста в элементе управления TextBox в Windows Forms
- Практическое руководство. Многострочные элементы управления TextBox в Windows Forms
- Элемент управления TextBox
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Как вывести кавычки в c
Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.12.2008
Репутация: нет
Всего: нет
Как в C при помощи printf вывести кавычки в строке.
Решил попрактиковаться в выводе текстовых строк.
Нужно вывести кавычки внутри строки через printf, какие специальные символы для того используются.
| Дата 1.12.2008, 14:59 (ссылка) | (нет голосов) Загрузка . |
Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия
Репутация: 85
Всего: 196
Надо использовать "экранирование" обратным слешем:
| Код |
| printf("My text is: \"my text\"\n"); |
| Дата 1.12.2008, 15:58 (ссылка) | (нет голосов) Загрузка . |
Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.12.2008
Репутация: нет
Всего: нет
Спасибо bsa, тоже уже нашёл, но тем не менее.
Запрещается!
1. Публиковать ссылки на вскрытые компоненты
2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
- Действия модераторов можно обсудить здесь
- С просьбами о написании курсовой, реферата и т.п. обращаться сюда
- Вопросы по реализации алгоритмов рассматриваются здесь
- FAQ раздела лежит здесь!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
[ Время генерации скрипта: 0.1201 ] [ Использовано запросов: 21 ] [ GZIP включён ]