Schreiben Sie ein C-Programm zum extrahieren eines Teils einer Zeichenfolge aus einem Zeichen-string mit for-Schleife
#include<stdio.h>
#include<string.h>
void main()
{
char str1[50],str2[50];
int i,j,n,m,l;
clrscr();
printf("Enter the string\n");
gets(str1); //scanf ("%s",str1);
printf("Enter the position of the required character: ");
scanf("%d",&n);
printf("Enter the required number of characters to be extracted: ");
scanf("%d",&m);
l=strlen(str1);
if(m+n-1<l)
{
for(i=n-1;i<m+n-1;i++)
{
for(j=0;j<i;j++)
{
str2[j]=str1[i];
str2[j]='\0';
}
}
printf ("The extracted string is: %s",str2);
}
else
printf ("string extraction is not possible");
}
Erwartete Ausgabe
Enter the string : UNIVERSITY IN BANGALORE
Enter the position of the required character: 6
Enter the required number of characters to be extracted: 4
The extracted string is: SITY
- haben Sie tryed zu verwenden strncpy?
- Und Ihre Frage ist? (Okay, Sie sind nicht immer das gewünschte Ergebnis, denn Sie überschreiben die kopierten Zeichen
str2[j]
mit null-terminator sofort statt, nachdem die Schleife. Sie brauchen auch nicht zwei geschachtelte Schleifen;i
undj
sind durch die Verschiebung, ich.e die Ausgangsposition.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Regel, wenn die Anzahl der extrahierten Zeichen übersteigt die Anzahl der verfügbaren Zeichen von der Zeichenkette ab der angegebenen position dann alle verfügbaren Zeichen werden kopiert.
Ich würde schreiben die main-Schleife der folgenden Art und Weise
Berücksichtigt werden, dass die Funktion main übernimmt Rückgabetyp
int
.Auch, es wäre viel besser, wenn all diese Variablen n, m, l, ich würde deklariert haben Typ
size_t
statt int. Ansonsten sollten Sie überprüfen, ob Ihre Werte negativ sind.:)