Как присвоить переменной текстовое значение c
Перейти к содержимому

Как присвоить переменной текстовое значение c

  • автор:

Как присвоить переменную значению указателя

есть указатель *N ; N=»it’s a good weather today»; char A[100]; Как присвоить значение A N или просто как вывести на консоль N ?

Отслеживать
11.5k 8 8 золотых знаков 43 43 серебряных знака 70 70 бронзовых знаков
задан 14 янв 2016 в 12:33
57 5 5 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Если у вас имеется указатель, адресующий строковый литерал

char *N; N = "it's a good weather today"; 

и символьный массив

char A[100]; 

то, чтобы скопировать строковый литерал в символьный массив, вам следует использовать стандартную C функцию strcpy , объявленную в заголовке . Например,

#include //. strcpy( A, N ); 

при условии, что размер массива достаточен, для размещения в нем строкового литерала. В противном случае следует использовать функцию strncpy

#include //. strncpy( A, N, sizeof( A ) ); A[sizeof( A ) - 1] = '\0'; 

После этого вы можете вывести строку на консоль, как, например,

puts( A ); 
printf( "%s\n", A ); 

Как присвоить переменной текстовое значение c

Оператор присваивания. Запись значения в переменную на Си

Как Вы помните, переменные нужны чтобы хранить в них какие-то данные. Разберёмся как использовать переменные по их прямому назначению. Основной вопрос такой: «Как сохранить значение в переменной». Или вспоминая аналогию с коробкой «Как положить что-то в коробку?»

Ответ прост. Для этого существует специальный оператор, который называется оператором присваивания и обозначается символом равно » code-left»>

Листинг 1. Присваивание значения переменной

int z; // объявляем переменную целого типа с именем z z = 5; // заносим в переменную число 5 double pi = 3.1415926; // создаём переменную и сразу присваиваем ей значение

В примере выше показаны два способа присвоить значение переменной. В первом случае мы сначала создаём переменную, а потом записываем в неё значение, а во втором случае мы сразу создаём переменную и присваиваем ей значение.

Второй вариант записи короче, но делает в то же самое, что и первый. Берёт значение, которое записано справа от знака равно, и сохраняет его в переменную, которая записана слева от от него.

Не забывайте ставить после очередной команды точку с запятой.

Есть несколько важных моментов на которых надо отдельно заострить внимание:

  • в некоторых языках программирования, после того как вы создали переменную, в ней сразу же хранится значение нуль. В языке Си это не так. Пока переменной не присвоено какое-нибудь значение, в ней будет храниться «мусор». Как этот мусор выглядит мы посмотрим на следующем уроке.
  • справа от знака равно НЕ обязательно должно быть записано какое-то конкретное число, там может быть записано арифметическое выражение или имя переменной.
int n; n = 1+2; // В переменную n записываем значение 3

Когда переменной присваивается значение, то то, что хранилось в ней до этого удаляется.

int n=10; // Создаём переменную и записываем в неё 10 n = 5; // Теперь в переменной записано значение 5, а значение 10 удалено.

Обратите внимание, новое значение не добавляется к старому, а полностью заменяет его. Я как-то говорил, что переменные похожи на коробки, но только на первый взгляд. Теперь мы видим, что наша аналогия с коробкой не совсем точная. Если бы в коробке лежало десять шариков, и мы бы туда положили ещё пять, то их стало бы 15. В выражении справа от знака равенства могут использоваться другие переменные, которые объявлены ранее. Вместо них в выражение подставляются значения, которые в них хранятся в данный момент.

int n=10, x=0; // можно инициализировать сразу несколько переменных n = 5; // теперь n равно 5 x = n - 3; // x будет равно 2 (5-3)

При вычислении выражения n — 3, n равняется 5. Это потому, что исходное значение 10, заданное при инициализации, мы в программе изменяли. А при вычислениях используется текущее значение переменной. В выражении справа от знака равенства может быть использована сама переменная.

int n=10; n = n + 5; // n будет равно 15 (10+5)

Кажется, что это какой-то порочный круг, но на самом деле проблем здесь не возникнет. Т.к. сначала вычисляется выражение справа, а только потом происходит присваивание. По аналогии с предыдущим примером при вычислении значения справа от знака равно вместо переменной n будет подставлено её текущее значение, т.е. 10. Потом будет произведено сложение и присваивание. Ещё один поучительный пример.

int x=5, y=0, z; y = x + z; // что будет записано в переменной y?

Если Вы подумали что 5, то это неправильно. Никто не знает, что в ней будет записано. Т.к. неизвестно, что было записано в переменной z. Ещё раз напоминаю, что если переменной не присвоено никакое значение, в ней хранится не нуль, а неизвестно что. Выражение справа от знака равно может быть достаточно сложным, оно не обязательно будет состоять из одного действия.

int a = 2, b=9, c=4, D; D = b*b - 4*a*c; // D будет равно 49 (9*9 - 4*2*4)

Теперь ещё один важный момент, который надо понимать. Когда я рассказывал о типах данных, я говорил, что в переменной можно хранить значения только того же типа, что и тип переменной. Например, в переменную целого типа нельзя положить вещественное число. Этот принцип применяется и с выражениями. Чтобы программа работала корректно, необходимо, чтобы тип выражения или переменной справа от знака присваивания совпадал с типом переменной. Посмотрим несколько примеров.

int n, a = 2; double x, pi = 3.14; char s = 'k'; // сохраняем в s символ k. Сам символ нужно написать в одинарных кавычках. s = pi; // неправильно. В коробку для символов пытаемся положить вещественное число n = a*pi; // неправильно. В коробку для целых числе пытаемся положить 6.28 (2*3.14) a = x; // неправильно. В целочисленную переменную пытаемся сохранить вещественное число x = 2+a; // ДОПУСТИМО. x будет равно 4.0

Внимание на последнюю строчку! Хотя справа выражение целого типа, а слева вещественная переменная, данная команда всё равно будет работать так, как надо. Это из-за того, что все целые числа можно записать как вещественные, у которых дробная часть равна нулю. Подобная штука называется неявное приведение (преобразование) типов . С этой возможностью надо быть очень осторожным, т.к. компилятор не отслеживает такие ошибки. Другими словами программа будет скомпилирована, но работать будет неправильно. Мы ещё вернёмся к этому в следующем уроке, когда научимся выводить значение переменных на экран компьютера. Сохрани в закладки или поддержи проект.

Практика

  1. Решите предложенные задачи. Для удобства работы сразу переходите в полноэкранный режим

Как присвоить переменной текстовое значение c

Для хранения данных в программе в языке C++ используются переменные . Фактически переменная представляет именнованный участок памяти. Переменная имеет тип, имя и значение. Тип определяет, какие именно данные может хранить переменная.

Перед использованием любую переменную надо определить. Синтаксис определения переменной выглядит следующим образом:

тип_переменной имя_переменной;

Именование переменных

Имя переменной последовательность алфавитных-цифровых символов и знака подчеркивания _. При этом имя переменной должно начинаться с алфавитного символа или подчеркивания.

Кроме того, в качестве имени переменной нельзя использовать ключевые слова языке C++, например, for или if . Но таких слов не так много, и по ходу освоения C++ вы соориентируетесь, какие слова являются ключевыми.

Следует отметить, что при этом не рекомендуются следующие именования:

  • имена, которые начинаются с двух подчеркиваний
  • имена, которые начинаются с подчеркивания, за которым идет заглавный алфавитный символ
  • имена в глобальной области (вне функции main), которые начинаются с подчеркивания

Дело в том, что при подобных именах повышается вероятность, что подобные названия будут конфликтовать с именами (например, именами переменных), которые генерирует компилятор или которые определены в подключаемых стандартных модулях C++. Поэтому некоторые вообще не рекомендуют начинать имя с символа подчеркивания

Определение переменной

В общем случае переменная определяется в следующем виде:

тип_переменной имя_переменной;

Например, простейшее определение переменной:

int age;

Здесь определена переменная age, которая имеет тип int . Поскольку определение переменной представляет собой инструкцию, то после него ставится точка с запятой.

Также стоит учитывать, что C++ — регистрозависимый язык, а это значит, что регистр символов имеет большое значение. То есть в следующем коде будут определяться две разные переменные:

int age; int Age;

Поэтому переменная Age не будет представлять то же самое, что и переменная age.

Также нельзя объявить больше одной переменной с одним и тем же именем, например:

int age; int age;

Подобное определение вызовет ошибку на этапе компиляции.

Инициализация

После определения переменной можно присвоить некоторое значение. Присвоение переменной начального значения называется инициализацией . В C++ есть три вида инициализации:

  • Нотация присваивания (assignment notation)
  • Функциональная нотация (functional notation)
  • Инициализация в фигурных скобках (braced initialization)

Рассмотрим все эти виды инициализаций

Нотация присваивания

Суть нотациия присваивания — с помощью оператора присваивания (знак «равно» или =) переменной передаем некоторое значение:

int age; age = 20;

Здесь в качестве значения переменной присваивается число 20. Постоянные значения любого типа, наподобие чисел, символов, строк, такие как 20, 123.456 (дробное число), «A» или «hello», называются литералами . То есть в данном случае переменной присваивается целочисленный литерал 20.

Например, определим в программе переменную и выведем ее значение на консоль:

#include int main() < int age; age = 28; std::cout можно вывести несколько значений на консоль.

После компиляции и запуска скомпилированной программы на консоль будет выведено число 28.

Age = 28

Можно сразу при определении переменной дать ей некоторое начальное значение:

#include int main() < int age = 28; std::coutint age ; // braced initialization

В данном случае переменная будет иметь значение 38.

Функциональная нотация

При функциональной нотации после названия переменной в круглых скобках указывается ее значение:

int age (38); // functional notation

В данном случае переменная будет иметь значение 38.

Во всех трех случаях присваиваемое переменной значение может представлять сложное вычисляемое выражение. Например:

int age1 ; int age2 (22 + 5); int age3 = 22 + 5;

Можно сразу инициализировать несколько переменных:

int age1 , age2 (23), age3 = 24;

В большинстве случаев все три варианта инициализации эквивалентны. Однако инициализация в фигурных скобках немного безопаснее, когда применяется сужающее преобразование. В общем случае ожидается, что переменной передается значение, которое соответствует ее типу. Если же это не так, то компилятор попытается преобразовать присваиваемое значение в тип переменной. Сужающее преобразование изменяет значение одного типа на тип с более ограниченным диапазоном значений. Таким образом, преобразование может привести к потере информации. Возьмем следующий пример:

#include int main()

Здесь переменным age1 и age2, которые представляют тип int , то есть целое число, присваивается дробное значение - 23.5 и 24.5 соответственно. Но в большинстве компиляторов, по крайней мере на момент написания данной статьи, этот код нормально скомпилируется и выполнится. Мы получим следующий вывод:

Age1 = 23 Age2 = 24

Теперь возьмем пример с инициализацией через фигурные скобки:

#include int main() < int age ; std::cout

Здесь переменной age, которая также представляет целое число, также присваивается дробное значение - 22.5. Однако теперь при компиляции многие компиляторы сообщат нам об ошибке. Например, вывод компилятора g++:

hello.cpp: In function 'int main()': hello.cpp:5:15: error: narrowing conversion of '2.25e+1' from 'double' to 'int' [-Wnarrowing] 5 | int age1 ;

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

Инициализация нулем

При инициализации в фигурных скобках можно опустить значение:

int counter <>;

В этом случае переменная будет инициализироваться нулем и фактически будет аналогично коду:

int counter ;

Инициализация по умолчанию

Если переменную не инициализировать, то происходит ее инициализация по умолчанию. И переменная получает некоторое значение по умолчанию, которое зависит от места, где эта переменная определена.

Если переменная, которая представляет встроенный тип (например, тип int), определена внутри функции, то она получает неопределенное значение. Если переменная встроенного типа определена вне функции, то она получает то значение по умолчанию, которое соответствует ее типу. Для числовых типов это число 0. Например:

#include int x; int main() < int y; std::cout  
X = 0 Y = 0

А в Visual Studio отсутствие значения переменной y вызовет ошибку компиляции.

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

Изменение значения

Ключевой особенностью переменных является то, что мы можем изменять их значения:

#include int main()

Консольный вывод программы:

Age1 = 22 Age2 = 23 Age3 = 38

Как переменной (x) присвоить текст/слово и т.д

Author24 — интернет-сервис помощи студентам

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

P.S. x=текст как это сделать?

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как присвоить переменной текст из файла?
Нужно чтобы программа брала строку из файла и проверяла является ли строка перевертышем. Не могу.

Как текст из заданного файла присвоить переменной типа std::string?
Здравствуйте, у меня есть файл с текстом, нужно этот текст присвоить переменной string, как это.

Как к переменной присвоить текст, с пробелами и символами, например '-'
Здравствуйте, очень долго бьюсь над этой проблемой. Нужно сделать так, чтобы когда человек вводил.

Как присвоить текст переменной?
Как присвоить текст переменной? Числовые значения присваиваются через int, а как присвоить текст?

Заблокирован

string x = "My text";

5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587

ЦитатаСообщение от Skampf Посмотреть сообщение

И при выводе, когда я вставлю Х что бы он вывел текст который я ввел..

1 2 3 4 5 6 7 8 9 10 11 12
#include #include using namespace std; int main() { string X; getline(cin, X); cout  X  endl; cin.get(); }

Заблокирован

ЦитатаСообщение от IrineK Посмотреть сообщение

Код C++
1
string x = "My text";

Пробовал. Но пишет стринг не определен.

Прочитал, что нужно в функцию, что то дописать. А что? Если она такая int _tmain(int argc, _TCHAR* argv[])

Заблокирован

ЦитатаСообщение от Skampf Посмотреть сообщение

Но пишет стринг не определен.

#include

5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587

ЦитатаСообщение от Skampf Посмотреть сообщение

А что? Если она такая int _tmain(int argc, _TCHAR* argv[])
Такая, не такая, смотри 3 пост. Чего не хватает?
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28

И правильно пишет, зачем вам плюсовые стринги, когда простые сишные строки тоже можно простым присваиванием задавать и копировать (готов поспорить с возможными оппонентами данного тезиса ).

Заблокирован

ЦитатаСообщение от IrineK Посмотреть сообщение

Теперь не каких ошибок.

Но выводиться смайлик

Помогите еще пожалуйста

Если выводить через printf какое должно быть значение ( %D-%f и т.д)??

5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
Может в форуме по Си поспорить?

ЦитатаСообщение от _Ivana Посмотреть сообщение

зачем вам плюсовые стринги
Форумом не ошиблись?

ЦитатаСообщение от alsav22 Посмотреть сообщение

Может в форуме по Си поспорить?
Там народ в среднем умнее, не будет спорить с очевидным 🙂

ЦитатаСообщение от alsav22 Посмотреть сообщение

Форумом не ошиблись?

Было б там так многолюдно и весело, а здесь скучно и тоскливо (как в разделе F#, к примеру 🙂 ) - сюда бы и не заглядывал 🙂 Но тут жизнь, потому что традиционно плюсами студентов мучают чаще. Но "сишные" строки - вполне себе часть плюсов, так что претензии имхо неуместны 🙂

Меню пользователя @ _Ivana
Читать блог

Эксперт по электронике

8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,526

ЦитатаСообщение от Skampf Посмотреть сообщение

Если выводить через printf какое должно быть значение
%s строка
%c символ
Заблокирован

ЦитатаСообщение от Skampf Посмотреть сообщение

Если выводить через printf

ЦитатаСообщение от _Ivana Посмотреть сообщение

зачем вам плюсовые стринги

Похоже, вам всё-таки нужны строки char.
"Плюсовые стринги" естественно выводить через cout, а не printf (см.пост №3).

Заблокирован

Что то не чего не получается.

присваиваю переменной x слово. Выводится 0

5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587

ЦитатаСообщение от _Ivana Посмотреть сообщение

так что претензии имхо неуместны
Это не претензии, недоумение: человек, на С++ форуме, спаршивает:

ЦитатаСообщение от _Ivana Посмотреть сообщение

зачем вам плюсовые стринги

Добавлено через 1 минуту

ЦитатаСообщение от Skampf Посмотреть сообщение

присваиваю переменной x слово. Выводится 0
Код продемонстрируй, ясновидящих тут нет.
Заблокирован

ЦитатаСообщение от alsav22 Посмотреть сообщение

Код продемонстрируй, ясновидящих тут нет.

1 2 3 4 5 6
switch (q) { case 1: string x="один"; } coutxendl;

Заблокирован
Skampf, давайте весь код.
Заблокирован

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
// dz_3_7.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include #include #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"RUS"); int n,x,q,w,e,r,t,z; printf("Введите натуральное число от 0 дл 10000 - "); scanf("%d",&n); if(n==10000){printf("\n%d - Десять тысяч\n\n",n);}else if ((n>=0)  cout; } else {printf("\nВы ввели не правильное число\n");} } system("pause"); return 0; }

Заблокирован

ЦитатаСообщение от Skampf Посмотреть сообщение

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *