|
|
|
|
Bonjour,
Je cherche un site où je pourrais trouver les codes sources des différentes fonctions en c.
Par exemple la fonction strcat, je trouve plein de sites où il explique comment l'utiliser mais j'en ai trouvé aucun où l'on fait sa définition. Donc que devrait-on faire si cette fonction n'existait pas pour concaténer 2 chaines?
Si vous pouviez me renseigner sur un bon petit site qui fait ça (si ça existe, ça m'avancerait bcp)
Merci
Regarde si tu trouve les sources de GNU-GCC, (c'est un compilateur open-source, cherche les sources de ces bibliotheques)
|
Tu connais ce site?
|
Je n'ai rien trouvé d'intéressant, pour en revenir à mon strcat, j'ai essayé et voici ce que j'ai codé pour le moment:
#include <stdio.h>
#include <stdlib.h>
//déclaration de la fonction
char * mystrcat (char *, const char *);
void main (void){
char *dst,*src;//déclaration des chaines
printf("Entrer la chaine dst\n");
scanf("%s",dst);
printf("Entrer la chaine src\n");
scanf("%s",src);//encodage des chaines
dst=mystrcat(dst,src);//appel de la fonction
printf("Chaine concatenee: %s",dst);//affichage de la chaine concaténée
}
char * mystrcat (char *dst, const char *src){
int i,j;//indice de parcours des chaines
for (i=0;dst[i]!='\0';i++);//se positionne au caractère de fin chaine de la chaine dst
for (j=0;src[j]!='\0';j++){//copie de src dans dst
dst[i]=src[j];
i++;}
dst[i]='\0';//je met le caractère de fin de chaine dans dst
return dst;
}
Ca me donne 2 warnings car je n'ai pas initialisé les 2 chaines mais je ne peux pas utiliser de calloc ou malloc donc jvois pas trop les initialiser. Le programme se lance, j'entre les 2 chaines puis ça plante, ke dois-je modifier? |
Salut,
for (i=0;dst[i]!='\0';i++) je pense qu'il y a un problème i est une variable int et dst char ce n'est pas plutôt while ( dst[i] != '\0') ou si tu utilise for : for (i=0;strlen(dst[i])-1;i++) ? |
Ton plantage est normal, ça vient du fait que t'as pas allouer d'espace pour tes chaines! au moins si tu ne veux pas utiliser malloc ou calloc (je vois d'ailleur pas pour quelle raison) tu doit utiliser des tableaux de chaines assez grands!
char *dst,*src;//déclaration des chaines par: char dst[200],src[200]; //déclaration des chaines @* Invité bienvenue, Membre t'es un(e) ami(e), Profil rempli on t'aime, tu parle SMS tu vas dehors! |
Salut,
|