logo

Obțineți un subșir în C

Dat o ​​sfoară str și poz și numai care definește pornirea și lungimea subbarajului. Sarcina este de a genera un subșir de dimensiune numai pornind de la index poz .

A subșir este o secvență adiacentă de caractere într-un șir.



system.out.println

Exemple:

Intrare: Str =the, pos=1, len=2
Ieșire: th
Explicaţie: subșirurile vor fi: , t, h, e, th, el, the.

Intrare: Str =geeks, pos=3, length=3
Ieșire: de exemplu
Explicaţie: subșirurile sunt: ​​, g, e, e, k, s, ge, ee, ek, ks, gee, eek, ex, geek, eeks, geeks.



Abordare: Problema poate fi rezolvată urmând ideea de mai jos:

Creați o matrice de caractere și puneți caracterele începând de la poz la matricea de caractere pentru a genera subșirul.

Urmați pașii de mai jos pentru a implementa ideea:



  • Creați o matrice de caractere pentru a stoca subșirul.
  • Iterați de la poziția dată pentru lungimea dată pentru a genera subșirul necesar.
    • Apoi stocați fiecare caracter în matricea de caractere și imprimați subșirul.

Urmați ilustrația de mai jos pentru o mai bună înțelegere.

Ilustrare:

java este egal

Luați în considerare un șir str=abcde , poz = 2 , doar = 3 .

=> La i = 2 nostru ans = c .

=> La i = 3, caracterul este „d”.
Așa că adăugați „d” la răspuns.
Anii noștri = CD

=> La i = 4, caracterul este „e”.
Așa că adăugați „e” la răspuns.
Ora ans = cde .

Mai jos este implementarea abordării de mai sus.

C




10 1 milioane
// C implementation of code> #include> #include> // Function to get substr in C> void> getString(>int> pos,>int> len,>int> c,>char> string[])> {> >char> substring[1000];> >while> (c substring = string[pos + c - 1]; c++; } substring = ' '; // Print the result printf(substring); printf(' '); return 0; } // Driver code int main() { int pos, len, c = 0; // Testcase1 char string[14] = 'geeksforgeeks'; // Initialize pos, len i.e., starting // index and len upto which we have to // get substring respectively. pos = 6; len = 5; printf('String: %s ', string); printf(' substring is: '); // Function call getString(pos, len, c, string); // Testcase2 char string2[5] = 'abcde'; pos = 1; len = 3; c = 0; printf(' String: %s ', string2); printf(' substring is: '); // Function call getString(pos, len, c, string2); return 0; }>

>

>

Ieșire

String: geeksforgeeks substring is: forge String: abcde substring is: abc>

Complexitatea timpului: Despre
Spatiu auxiliar: Despre

Folosind funcția strncpy() în C

De asemenea, putem folosi funcția strncpy() în C pentru a copia subșirul dintr-un șir de intrare dat. Este nevoie de 3 parametri care sunt șirul de destinație, șirul sursă împreună cu indexul de pornire și lungimea subșirului pe care trebuie să-l copiem.

Sintaxă:

strncpy(șir_destinație,șir_input+poz,len);

dacă altceva în shell bash

Aici poz este indicele de pornire și numai este lungimea subșirului pe care dorim să-l copiem.

Mai jos este codul pentru abordarea de mai sus.

C


rj12 vs rj11



// C implementation of code> #include> #include> // Driver code> int> main()> {> >int> pos, len;> >// Testcase1> >char> string[14] =>'geeksforgeeks'>;> >char> substring[14];> >// Initialize pos, len i.e., starting> >// index and len upto which we have to> >// get substring respectively.> >pos = 6;> >len = 5;> >printf>(>'String: %s '>, string);> >printf>(>' substring is: '>);> >// Using strncpy function to> >// copy the substring> >strncpy>(substring,string+(pos-1),len);> >printf>(substring);> >// Testcase2> >char> string2[5] =>'abcde'>;> >char> substring2[5];> > >pos = 1;> >len = 3;> >printf>(>' String: %s '>, string2);> >printf>(>' substring is: '>);> >// Using strncpy function to> >// copy the substring> >strncpy>(substring2,string2+(pos-1),len);> >printf>(substring2);> >return> 0;> }> // This code is contributed by Pushpesh Raj.>

>

>

Ieșire

String: geeksforgeeks substring is: forge String: abcde substring is: abc>

Complexitatea timpului: Despre
Spatiu auxiliar: Despre