Струни в C (с примери)

В този урок ще научите за низовете в програмирането на C. Ще се научите да ги декларирате, инициализирате и да ги използвате за различни I / O операции с помощта на примери.

При програмирането на C низ е низ от символи, завършени с нулев знак . Например:

 char c() = "c string"; 

Когато компилаторът срещне последователност от символи, затворени в двойните кавички, той добавя нулев знак в края по подразбиране.

Как да декларирам низ?

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

 char s(5); 

Тук декларирахме низ от 5 знака.

Как да инициализирам низове?

Можете да инициализирате низове по няколко начина.

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Да вземем друг пример:

 char c(5) = "abcde";

Тук се опитваме да присвоим 6 знака (последният знак е '') на charмасив с 5 знака. Това е лошо и никога не трябва да правите това.

Присвояване на стойности на низове

Масивите и низовете са граждани от втора класа в C; те не поддържат оператора за присвояване, след като той бъде деклариран. Например,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Забележка: Използвайте функцията strcpy (), за да копирате низа вместо това.

Прочетете String от потребителя

Можете да използвате scanf()функцията за четене на низ.

На scanf()функцията чете последователност от символи, докато срещне интервали (пространство, нов ред, в раздела, и т.н.).

Пример 1: scanf () за четене на низ

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Изход

 Въведете име: Денис Ричи Вашето име е Денис.

Въпреки че Денис Ричи беше вписан в горната програма, само „Денис“ беше съхранен в низовия низ. Това е, защото след Денис имаше пространство.

Как да прочета ред от текст?

Можете да използвате fgets()функцията, за да прочетете ред от низ. И можете да използвате puts()за показване на низа.

Пример 2: fgets () и put ()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Изход

 Въведете име: Том Ханкс Име: Том Ханкс 

Тук използвахме fgets()функцията за четене на низ от потребителя.

fgets(name, sizeof(name), stdlin); // read string

На sizeof(name)резултатите до 30. Следователно, ние може да отнеме не повече от 30 символа като вход, който е с размерите на низ за името.

За да отпечатаме низа, ние използвахме puts(name);.

Забележка: В gets()функцията може да бъде и да вземе участие от страна на потребителя. Той обаче е премахнат от стандарта C.
Това е така, защото gets()ви позволява да въвеждате произволна дължина на символите. Следователно може да има препълване на буфер.

Предаване на низове до функции

Низовете могат да бъдат предадени на функция по подобен начин като масивите. Научете повече за предаването на масиви на функция.

Пример 3: Предаване на низ към функция

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Струни и указатели

Подобно на масивите, имената на низове се "разпадат" на указателите. Следователно можете да използвате указатели за манипулиране на елементи от низа. Препоръчахме ви да проверите C масиви и указатели, преди да проверите този пример.

Пример 4: Струни и указатели

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Често използвани низови функции

  • strlen () - изчислява дължината на низ
  • strcpy () - копира низ в друг
  • strcmp () - сравнява два низа
  • strcat () - обединява два низа

Интересни статии...