Stīgas C (ar piemēriem)

Šajā apmācībā jūs uzzināsit par virknēm C programmēšanā. Jūs iemācīsities tos deklarēt, inicializēt un ar piemēriem izmantot dažādās I / O operācijās.

Programmējot C, virkne ir rakstzīmju secība, kas izbeigta ar nulles rakstzīmi . Piemēram:

 char c() = "c string"; 

Kad sastādītājs sastop rakstzīmju secību, kas ievietota divkāršās pēdiņās, tā pēc noklusējuma beigās pievieno nulles rakstzīmi .

Kā deklarēt virkni?

Šādi varat deklarēt virknes:

 char s(5); 

Šeit mēs esam paziņojuši 5 rakstzīmju virkni.

Kā inicializēt virknes?

Virknes var inicializēt virknē.

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

Ņemsim vēl vienu piemēru:

 char c(5) = "abcde";

Šeit mēs mēģinām piešķirt 6 rakstzīmes (pēdējais ir '') charmasīvam ar 5 rakstzīmēm. Tas ir slikti, un jums to nekad nevajadzētu darīt.

Vērtību piešķiršana virknēm

Masīvi un virknes ir otrās šķiras pilsoņi C; viņi neatbalsta piešķiršanas operatoru, kad tas ir deklarēts. Piemēram,

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

Piezīme. Lai kopētu virkni, izmantojiet funkciju strcpy ().

Izlasiet virkni no lietotāja

Funkciju var izmantot scanf()virknes nolasīšanai.

scanf()Funkcija nolasa rakstzīmju secību, līdz tas saskaras ar atstarpēm (telpa, jaunas rindas, tab, uc).

1. piemērs: scanf (), lai lasītu virkni

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

Rezultāts

 Ievadiet vārdu: Dennis Ritchie Jūsu vārds ir Deniss.

Lai arī Deniss Ričijs tika ievadīts iepriekš minētajā programmā, vārdu virknē tika saglabāts tikai “Deniss”. Tas ir tāpēc, ka pēc Denisa bija vieta.

Kā lasīt teksta rindiņu?

Funkciju var izmantot fgets()virknes rindas nolasīšanai. Un jūs varat izmantot, puts()lai parādītu virkni.

2. piemērs: fgets () un 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; ) 

Rezultāts

 Ievadiet vārdu: Tom Hanks Vārds: Tom Hanks 

Šeit mēs izmantojām fgets()funkciju, lai lasītu virkni no lietotāja.

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

Par sizeof(name)rezultātiem līdz 30. Līdz ar to, mēs varam veikt ne vairāk kā 30 rakstzīmes kā ieguldījumu, kas ir lielums vārdu virknes.

Virknes drukāšanai esam izmantojuši puts(name);.

Piezīme . gets()Funkcija var būt arī lietotāja ievadīta informācija. Tomēr tas ir svītrots no C standarta.
Tas ir tāpēc, ka gets()ļauj ievadīt jebkura garuma rakstzīmes. Tādējādi var būt bufera pārpilde.

Stīgu nodošana funkcijām

Stīgas var nodot funkcijai līdzīgi kā masīvi. Uzziniet vairāk par masīvu nodošanu funkcijai.

3. piemērs: virknes nodošana funkcijai

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

Stīgas un norādes

Līdzīgi kā masīvi, virkņu nosaukumi tiek "sabojāti" līdz rādītājiem. Tādējādi jūs varat izmantot norādes, lai manipulētu ar virknes elementiem. Mēs iesakām jums pārbaudīt C masīvus un rādītājus, pirms pārbaudāt šo piemēru.

4. piemērs: Stīgas un norādes

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

Parasti izmantotās virkņu funkcijas

  • strlen () - aprēķina virknes garumu
  • strcpy () - kopē virkni uz citu
  • strcmp () - salīdzina divas virknes
  • strcat () - savieno divas virknes

Interesanti raksti...