J'ai commencé à apprendre c. Je fais un exercice et la question est la suivante. Ecrivez une fonction appelée insertString
pour insérer une chaîne de caractères dans une autre chaîne. Les arguments de la fonction doivent être constitués de la chaîne source, de la chaîne à insérer et de la position dans la chaîne source où la chaîne doit être insérée . L'appel insertString (text, "per", 10);
avec le texte défini à l'origine "the wrong son"
entraîne l'insertion de la chaîne de caractères "per"
dans le texte, en commençant par text[10]
. Par conséquent, la chaîne de caractères "the wrong person"
est stockée dans le tableau de texte après la fonction renvoyée.insertion d'une sous-chaîne dans une autre chaîne en c
#include<stdio.h>
int insertString(char[],char[],int);
int stringLength(char[]);
int main()
{
char text[]="the wrong son";
int result=insertString(text,"per",10);
if(result!=-1)
printf("string 1 is : %s \n",text);
else
printf("Not possible\n");
return 0;
}
int insertString(char a[],char b[],int pos)
{
int i=0,j=0;
int lengthA=stringLength(a);
int lengthB=stringLength(b);
if(pos>lengthA)
return -1;
for(i=lengthA;i>=pos;i--)
a[i+lengthB]=a[i];
for (i = 0; i < lengthB; ++i)
a[i + pos] = b[i];
return 1;
}
int stringLength(char x[])
{
int length=0;
while(x[length]!='\0')
length++;
return length;
}
J'ai fait cela et ça marche aussi. mais je reçois un message abort trap : 6
. quand je l'ai regardé, j'ai appris que c'était une erreur parce que j'écris à la mémoire que je ne possède pas. depuis que j'ai utilisé des tableaux de caractères de longueur variable, où est le null character
, indique la fin du tableau et j'essaie de l'étendre en insérant une chaîne, c'est ma compréhension. Ai-je raison jusqu'à présent? Je déplace également le null character
. Je ne sais pas si c'est juste ou faux.
est donc un moyen de contourner cette erreur? Aussi, je ne sais pas encore les pointeurs et ils sont dans le prochain chapitre du manuel.
Toute aide dans ce domaine serait grandement appréciée.
Vous n'utilisez pas de "tableaux de caractères de longueur variable". Vous devez soit allouer suffisamment d'espace pour votre résultat final à l'avance, soit utiliser la mémoire allouée et éventuellement la réaffecter. Recherchez les références 'malloc()' et 'realloc()'; – Logicrat
"J'ai utilisé des tableaux de caractères de longueur variable" où? 'char a []' dans l'en-tête de la fonction n'est pas un tableau de longueur variable. –
oh c'est ça? @Logicrat. dans le manuel, il est donné que les tableaux de caractères qui se terminent par «caractère nul» sont des tableaux de caractères de longueur variable – yash