C Строка – Как объявлять строки на языке программирования C

c stroka – kak obyavlyat stroki na yazyke programmirovaniya c

Компьютеры хранят и обрабатывают все виды данных.

Строки являются лишь одной из многих форм, в которых информация представлена ​​и обрабатывается компьютерами.

Строки в языке программирования C работают по другому, чем в других современных языках программирования.

В этой статье вы узнаете, как объявлять строчки в C.

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

Знание основ этих понятий поможет вам лучше понять, как объявлять и работать со строчками в C.

Давайте начнем!

Типы данных в C

C имеет несколько встроенных типов данных.

Они есть int, short, long, float, double, long double и char.

Как видите, нет встроенного типа данных string или str (сокращение от string).

The char тип данных в C

Из тех типов, которые вы только что видели, единственный способ использовать и представлять символы в C — это использовать char тип данных.

Использование charвы можете представлять a одиночный символ – из 256, которые распознают ваш компьютер. Он наиболее часто используется для представления символов из диаграммы ASCII.

Одиночные персонажи окружены одинарные кавычки.

Ниже приведены все примеры chars – четное число, окруженное одинарными кавычками и одним пробелом, является a char в C:

'D', '!', '5', 'l', ' ' 

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

Что делать, если вы хотите представить больше одного персонажа?

Следующее нет действительный char – несмотря на то, что они окружены одинарными кавычками. Это связано с тем, что он не содержит только одного символа в одинарных кавычках:

'freeCodeCamp is awesome'

Когда много отдельных символов объединено в группу, как в предложение, которое вы видите выше, a строка создается. В этом случае, когда вы используете строки, вместо одинарных кавычек вы должны использовать только одинарные кавычки. двойной Лапки.

"freeCodeCamp is awesome"

Как объявлять переменные в C

Пока что вы видели, как текст представлен на C.

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

Способ хранения данных на C и в большинстве языков программирования заключается в переменных.

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

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

У C есть много разных типов переменных, поскольку существует много разных типов данных.

Каждая переменная имеет соответствующий тип данных.

Когда вы создаете переменную, вы сначала упоминаете тип переменной (будет ли она содержать целое число, float, char или какие-либо другие значения данных), ее название, а затем, по желанию, назначаете ей значение:

#include <stdio.h>
int main(void){

char letter="D";

//creates a variable named letter 
//it holds only values of type char
// the single character 'D' is assigned to letter
}

Будьте осторожны, чтобы не смешивать типы данных при работе с переменными в C, поскольку это приведет к ошибкам.

Например, если вы попытаетесь изменить пример сверху, чтобы использовать двойные кавычки (помните, что символы только используйте одинарные кавычки), вы получите ошибку при компиляции кода:

#include <stdio.h>
int main(void){

char letter = "D";

//output:

test.c:4:6: warning: incompatible pointer to integer conversion initializing 'char' with an expression of type
      'char [2]' [-Wint-conversion]
char letter = "D";
     ^        ~~~
1 warning generated.


}

Как уже упоминалось ранее, C не имеет встроенного строкового типа данных. Это также означает, что C не имеет строчных переменных!

Как создать массивы на C

По сути, массив – это переменная, сохраняющая несколько значений. Это коллекция многих предметов одного типа.

Как и в случае с обычными переменными, существует много разных типов массивов, поскольку массивы могут содержать только элементы одного типа данных. Существуют только массивы ints, только floats и так далее.

Вот как вы определяете массив intss например:

int numbers[3];

Сначала вы указываете тип данных элементов, которые будут содержать массив. Затем вы даете ему имя и сразу после имени также включаете пару квадратных скобок с целым числом. Целое число определяет длина массива.

В приведенном выше примере массив может храниться 3 ценности.

После определения массива вы можете назначать значение отдельно в квадратных скобках, используя индексацию. Индексирование на C (и большинстве языков программирования) начинается с 0.

//Define the array; it can hold 3 values
int numbers[3];

//assign the 1st item of the numbers array the value of 1
int numbers[0] = 1;

//assign the 2nd item of the numbers array the value of 2
int numbers[1] = 2;

//assing the 3rd item of the numbers array the value of 3
int numbers[2] = 3;

Вы ссылаетесь и получаете элемент из массива, используя название массива и индекс элемента в квадратных скобках, например:

numbers[2]; // returns the value 3

Что такое символьные массивы в C?

Итак, как все упомянутое до сих пор сочетается вместе и какое отношение это имеет к инициализации строк в C и их сохранению в памяти?

Ну, строки в C действительно являются типом массива, в частности, это a character array. Строки – это набор char ценности.

Как работают строки в C

В C все строчки заканчиваются на a 0. Это 0 позволяет C знать, где кончается строка.

Этот нуль, заканчивающийся строкой, называется a терминатор строки. Вы также можете увидеть этот термин нулевой нуль используется для этого, что имеет то же значение.

Не путайте этот конечный ноль с числовым целым числом 0 или даже характер '0' — это не одно и то же.

Завершающий строку автоматически добавляется в конец каждой строки в C. Но мы его не видим – он всегда есть.

Терминатор строки представлен так: '\0'. Что отличает его от персонажа '0' является обратной косой чертой.

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

Скриншот-2021-10-04-8.46.08-PM

Каждый символ занимает в памяти один б.

Нить "hello"на рисунке выше, занимает 6 bytes.

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

Длина строк в C

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

Терминатор строки не учитывается, когда нужно найти длину строки.

Например, строчка freeCodeCamp имеет длину 12 символы.

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

Например, строчка I code имеет длину 6 символы. I является 1 символом, code имеет 4 символа, затем есть 1 пробел.

Таким образом, длина строки не является таким же числом, как количество байтов и объем памяти, который он занимает.

Как создавать символьные массивы и инициализировать строки в C

Первым шагом является использование char тип данных. Это дает C знать, что вы хотите создать массив, содержащий символы.

Затем вы даете имя массива и сразу же после этого включаете пару открывающих и закрывающих квадратных скобок.

В квадратные скобки вы включите целое число. Это целое число будет наибольшее количество символов, которое вы хотите, чтобы ваша строка была в том числе терминатор строки.

char city[7];

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

#include <stdio.h>

int main(void) {
    char city[7];

    city[0] = 'A';
    city[1] = 't';
    city[2] = 'h';
    city[3] = 'e';
    city[4] = 'n';
    city[5] = 's';
    city[6] = '\0'; //don't forget this!

    printf("I live in %s",city);

}

Но это достаточно трудоемко. Зато когда вы впервые определяете массив символов, у вас есть возможность назначить ему значение непосредственно с помощью строчного литературы в двойных кавычках:

#include <stdio.h>
int main(void){

char city[7] = "Athens";

//defines a character array named city
//it can hold a string up to 7 characters INCLUDING the string terminator
//the value "Athens" is assigned when the character array is being defined

//this is how you print the character array value
printf("I live in %s",city);

}

Если вы хотите вместо того, чтобы включать число в квадратные скобки, вы можете только назначить значение массива символов.

Он работает точно так же, как и приведенный выше пример. Он подсчитает количество символов в указанном вами значении и автоматически добавит нулевой символ в конце:

char city[] = "Athens";

//"Athens" has a length of 6 characters
//"Athens" takes up 7 bytes in memory,with the null zero included

/*
char city[7]  = "Athens";

is equal to 

char city[] = "Athens";

*/

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

Если вы хотите больше места, нужно больше памяти и планируете изменить значение позже, включите большее число в квадратные скобки:

char city[15] = "Athens";

/* 
The city character array will now be able to hold 15 characters 
(including the null zero)

In this case, the remaining 8 (15 - 7) places will be empty

You'll be able to reassign a value up to 15 characters (including null zero as always)
*/

Как изменить содержание символьного массива

Итак, вы знаете, как инициализировать строки в C. Что делать, если вы хотите изменить эту строку?

Вы не можете просто использовать оператор присвоения (=) и назначьте ему новое значение. Вы можете это сделать только тогда, когда вы впервые определяете массив символов.

Как было показано ранее, способ получить доступ к элементу из массива – это ссылка на имя массива и номер индекса элемента.

Итак, чтобы изменить строку, вы можете изменить каждый символ отдельно, один за другим:

#include <stdio.h>

int main(void) {
    char city[7] = "Athens";

    printf("I live in %s",city);

    //changing each character individually means you have to use single quotation marks
    
    //the new value has to take up 7 bytes of memory

   //indexing starts at 0, the first character has an index of 0

    city[0] = 'L';
    city[1] = 'o';
    city[2] = 'n';
    city[3] = 'd';
    city[4] = 'o';
    city[5] = 'n';
    city[6] = '\0'; //DON'T FORGET THIS!

    printf("\nBut now I live in %s",city);

}
//output:
//I live in Athens
//But now I live in London

Однако этот метод достаточно громоздок, трудоемок и склонен к ошибкам. Это точно не самый лучший способ.

Вместо этого можно использовать strcpy() функция, что означает string copy.

Чтобы использовать эту функцию, вы должны включить #include <string.h> строка после #include <stdio.h> строку в верхней части файла.

The <string.h> файл предлагает strcpy() функция.

При использовании strcpy(), вы сначала включаете название массива символов, а затем новое значение, которое нужно назначить. The strcpy() функция автоматически добавляет терминатор строки в новую созданную строку:

#include <stdio.h>
#include <string.h>

int main(void) {
    char city[15] = "Athens";
    strcpy(city,"Barcelona");

    printf("I am going on holiday to %s",city);
    
    //output:
    //I am going on holiday to Barcelona
}

Вывод

И вот оно. Теперь вы знаете, как объявлять строчки в C.

Обобщить:

  • C не имеет встроенной функции строки.
  • Для работы со строчками необходимо использовать символьные массивы.
  • Создавая символьные массивы, оставьте достаточно места для самой длинной строки, которую вы хотите сохранить, а также учтите терминатор строки, содержащийся в конце каждой строки в C.
  • Чтобы разместить или изменить строки в символьных массивах, вы можете:
    • Определите массив, затем назначьте каждому отдельному символьному элементу по одному.
    • ИЛИ определите массив и инициализируйте значения одновременно.
  • Изменяя значение строки можно использовать strcpy() функция после того, как вы включили <string.h> заголовочный файл.

Если вы хотите узнать больше о C, я написал руководство для начинающих, делающих первые шаги в языке.

Он основан на первых нескольких неделях курса CS50 Introduction to Computer Science, и я объясню некоторые фундаментальные концепции и рассказываю, как язык работает на высоком уровне.

Вы также можете просмотреть учебник по программированию C для начинающих на канале freeCodeCamp на YouTube.

Спасибо за чтение и приятное обучение 🙂

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

Ваш адрес email не будет опубликован.