Какво е String в C?
A String в С е нищо друго освен една колекция от символи в линейна последователност. „C“ винаги третира низа с единични данни, въпреки че съдържа бели пространства. Единичен знак се дефинира с помощта на представяне с единични кавички. Низът е представен с помощта на двойни кавички.
Example, "Welcome to the world of programming!"
'C' предоставя стандартна библиотека
В този урок ще научите -
- Как да декларирам и инициализирам низ в C
- Въвеждане на низ: Прочетете низ
- Изход на низ: Отпечатайте / покажете низ
- функция fputs ()
- поставя функция
- Библиотеката на низовете
- Преобразуване на низ в число
Как да декларирам и инициализирам низ в C
AC String е прост масив с char като тип данни. Езикът "C" не поддържа директно низ като тип данни. Следователно, за да покажете низ в C, трябва да използвате масив от символи.
Общият синтаксис за деклариране на променлива като низ в C е както следва,
char string_variable_name [array_size];
Класическата декларация на низове може да се направи, както следва:
char string_name[string_length] = "string";
Размерът на масива трябва да бъде дефиниран, докато се декларира променлива C String, тъй като тя се използва за изчисляване на броя символи, които ще се съхраняват в променливата на низа в C. Някои валидни примери за деклариране на низове са както следва,
char first_name[15]; //declaration of a string variablechar last_name[15];
Горният пример представлява низови променливи с размер на масив от 15. Това означава, че даденият масив от низове на C може да съдържа най-много 15 знака. Индексирането на масива започва от 0, следователно ще съхранява символи от позиция 0-14. Компилаторът C автоматично добавя NULL символ '\ 0' към създадения масив от символи.
Нека изучим инициализацията на String в C. Следващият пример демонстрира инициализацията на Strings в C,
char first_name[15] = "ANTHONY";char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declarationchar string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/
В string3 символът NULL трябва да бъде добавен изрично и символите са затворени в единични кавички.
'C' също ни позволява да инициализираме променлива на низ, без да дефинираме размера на масива от символи. Това може да се направи по следния начин,
char first_name[ ] = "NATHAN";
Името на Strings в C действа като указател, защото всъщност е масив.
Въвеждане на низ: Прочетете низ
Когато пише интерактивни програми, които искат от потребителя въвеждане, C предоставя функциите scanf (), gets () и fgets (), за да намери ред текст, въведен от потребителя.
Когато използваме scanf () за четене, използваме спецификатора на формата „% s“, без да използваме „&“ за достъп до адреса на променливата, тъй като името на масива действа като указател. Например:
#includeint main() {char name[10];int age;printf("Enter your first name and age: \n");scanf("%s %d", name, &age);printf("You entered: %s %d",name,age);}
Изход:
Enter your first name and age:John_Smith 48
Проблемът с функцията scanf е, че тя никога не чете цели низове в C. Тя ще спре процеса на четене веднага щом се появи интервал, подаване на формуляр, вертикален раздел, нов ред или връщане на карета. Да предположим, че даваме вход като „Уроци за Guru99“, тогава функцията scanf никога няма да прочете цял низ, тъй като между двете имена се появява пробел. Функцията scanf ще чете само Guru99.
За да прочетем низ, съдържащ интервали, използваме функцията gets (). Gets игнорира белите пространства. Спира четенето при достигане на нов ред (натиснат е клавиш Enter). Например:
#includeint main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}
Изход:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
Друга по-безопасна алтернатива на get () е функцията fgets (), която чете определен брой знаци. Например:
#includeint main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}
Изход:
Enter your name plz: CarlosMy name is Carlos
Аргументите fgets () са:
- името на низа,
- броя на символите за четене,
- stdin означава да четете от стандартния вход, който е клавиатурата.
Изход на низ: Отпечатайте / покажете низ
Стандартната функция printf се използва за отпечатване или показване на низове в C на изходно устройство. Използваният спецификатор на формат е% s
Пример,
printf("%s", name);
Извеждането на низове се извършва с функциите fputs () и printf ().
функция fputs ()
Fputs () се нуждае от името на низа и указател до мястото, където искате да покажете текста. Използваме stdout, който се отнася до стандартния изход, за да отпечатаме на екрана. Например:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Изход:
Enter your town: New YorkNew York
поставя функция
Функцията puts се използва за отпечатване на низ в C на изходно устройство и преместване на курсора обратно на първата позиция. Функцията за путове може да се използва по следния начин,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
Синтаксисът на тази функция е сравнително прост от другите функции.
Библиотеката на низовете
Стандартната библиотека 'C' предоставя различни функции за манипулиране на низовете в рамките на програма. Тези функции се наричат още като обработчици на низове. Всички тези манипулатори се намират във заглавния файл
Функция | Предназначение |
strlen () | Тази функция се използва за намиране на дължина на низ. Той връща колко символа присъстват в низ, с изключение на символа NULL. |
strcat (str1, str2) | Тази функция се използва за комбиниране на два низа заедно, за да се образува един низ. Той добавя или свързва str2 към края на str1 и връща указател към str1. |
strcmp (str1, str2) | Тази функция се използва за сравняване на два низа помежду си. Той връща 0, ако str1 е равно на str2, по-малко от 0, ако str1 |
Нека разгледаме програмата по-долу, която демонстрира функции на библиотеката на низове:
#include#include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}
Изход:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
Други важни библиотечни функции са:
- strncmp (str1, str2, n): връща 0, ако първите n символа на str1 са равни на първите n символа на str2, по-малко от 0, ако str1
str2. - strncpy (str1, str2, n) Тази функция се използва за копиране на низ от друг низ. Копира първите n символа на str2 в str1
- strchr (str1, c): връща указател към първото появяване на char c в str1 или NULL, ако знакът не е намерен.
- strrchr (str1, c): търси str1 в обратна посока и връща указател на позицията на char c в str1 или NULL, ако знакът не е намерен.
- strstr (str1, str2): връща указател към първото появяване на str2 в str1 или NULL, ако str2 не е намерен.
- strncat (str1, str2, n) Добавя (обединява) първите n символа на str2 в края на str1 и връща указател към str1.
- strlwr (): за преобразуване на низ в малки букви
- strupr (): за преобразуване на низ в главни букви
- strrev (): за обръщане на низ
Преобразуване на низ в число
При програмирането на C можем да преобразуваме низ от числови знаци в числова стойност, за да предотвратим грешка при изпълнение. Библиотеката stdio.h съдържа следните функции за преобразуване на низ в число:
- int atoi (str) Означава ASCII към цяло число; той преобразува str в еквивалентната стойност int. Връща се 0, ако първият знак не е число или не се срещат числа.
- double atof (str) Стои на ASCII да плава, преобразува str в еквивалентната двойна стойност. 0.0 се връща, ако първият знак не е число или не се срещат числа.
- long int atol (str) Стои на ASCII в long int, Преобразува str в еквивалентна стойност на дълго цяло число. Връща се 0, ако първият знак не е число или не се срещат числа.
Следващата програма демонстрира функцията atoi ():
#includeint main(){char *string_id[10];int ID;printf("Enter a number: ");gets(string_id);ID = atoi(string_id);printf("you enter %d ",ID);return 0;}
Изход:
Enter a number: 221348you enter 221348
- Декларация на указател на низ като char * string = "language" е константа и не може да бъде модифицирана.
Обобщение
- Низът е поредица от символи, съхранявани в символен масив.
- Низът е текст, затворен в двойни кавички.
- Символ като „d“ не е низ и се обозначава с единични кавички.
- 'C' предоставя стандартни библиотечни функции за манипулиране на низове в програма. Манипулаторите на низове се съхраняват в заглавния файл
. - Низът трябва да бъде деклариран или инициализиран, преди да се използва в програма.
- Има различни функции за входни и изходни низове, всяка от тях има своите характеристики.
- Не забравяйте да включите библиотеката на низове, за да работите с нейните функции
- Можем да преобразуваме низ в число чрез atoi (), atof () и atol (), които са много полезни за процесите на кодиране и декодиране.
- Можем да манипулираме различни низове, като дефинираме масив от низове в C.