Ciągi w C (z przykładami)

W tym samouczku dowiesz się o napisach w programowaniu w C. Nauczysz się je deklarować, inicjować i używać do różnych operacji we / wy z pomocą przykładów.

W języku C ciąg to sekwencja znaków zakończona znakiem null . Na przykład:

 char c() = "c string"; 

Gdy kompilator napotka sekwencję znaków ujętą w podwójne cudzysłowy, domyślnie dołącza znak null na końcu.

Jak zadeklarować ciąg?

Oto jak możesz zadeklarować ciągi:

 char s(5); 

Tutaj zadeklarowaliśmy ciąg 5 znaków.

Jak zainicjować ciągi?

Łańcuchy można inicjalizować na wiele sposobów.

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

Weźmy inny przykład:

 char c(5) = "abcde";

W tym przypadku próbujemy przypisać 6 znaków (ostatni znak to '') do chartablicy składającej się z 5 znaków. To jest złe i nigdy nie powinieneś tego robić.

Przypisywanie wartości do ciągów

Tablice i łańcuchy są obywatelami drugiej kategorii w języku C; nie obsługują operatora przypisania po jego zadeklarowaniu. Na przykład,

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

Uwaga: Zamiast tego użyj funkcji strcpy (), aby skopiować ciąg.

Przeczytaj ciąg od użytkownika

Możesz użyć tej scanf()funkcji, aby odczytać ciąg.

scanf()Funkcja odczytuje sekwencję znaków, dopóki nie napotka spacje (spacja, znak nowej linii, zakładka, itd.).

Przykład 1: scanf () do odczytania łańcucha

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

Wynik

 Wpisz imię: Dennis Ritchie. Nazywasz się Dennis.

Mimo że Dennis Ritchie został wpisany w powyższym programie, tylko „Dennis” zostało zapisane w ciągu nazwy. To dlatego, że po Dennisie była przestrzeń.

Jak czytać wiersz tekstu?

Możesz użyć tej fgets()funkcji, aby odczytać wiersz ciągu. Możesz też użyć puts()do wyświetlenia ciągu.

Przykład 2: fgets () i puts ()

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

Wynik

 Wpisz imię: Tom Hanks Imię: Tom Hanks 

Tutaj użyliśmy fgets()funkcji do odczytania ciągu od użytkownika.

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

Te sizeof(name)wyniki do 30. Stąd możemy wziąć maksymalnie 30 znaków jako wejście, które jest wielkości napisu nazwy.

Aby wydrukować ciąg, użyliśmy puts(name);.

Uwaga:gets() Funkcja ta może być również wziąć wejście od użytkownika. Jednak został usunięty ze standardu C.
Dzieje się tak, ponieważ gets()umożliwia wprowadzenie dowolnej długości znaków. Dlatego może wystąpić przepełnienie bufora.

Przekazywanie ciągów do funkcji

Łańcuchy można przekazywać do funkcji w podobny sposób jak tablice. Dowiedz się więcej o przekazywaniu tablic do funkcji.

Przykład 3: przekazywanie ciągu do funkcji

 #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); ) 

Ciągi i wskaźniki

Podobnie jak w przypadku tablic, nazwy ciągów są „rozkładane” na wskaźniki. W związku z tym można używać wskaźników do manipulowania elementami łańcucha. Zalecamy sprawdzenie tablic i wskaźników C przed sprawdzeniem tego przykładu.

Przykład 4: Ciągi i wskaźniki

 #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 )

Powszechnie używane funkcje łańcuchowe

  • strlen () - oblicza długość łańcucha
  • strcpy () - kopiuje ciąg do innego
  • strcmp () - porównuje dwa łańcuchy
  • strcat () - łączy dwa ciągi

Interesujące artykuły...