Concaténer un char à un char* (language C)

Résolu/Fermé
cap'tain sheeps - 14 avril 2011 à 14:27
 cap'tain sheeps - 14 avril 2011 à 15:44
Bonjour et merci d'avance pour vos réponses.
Ne vous inquiétez pas ce ne sera pas très compliqué pour vous ;)
J'aimerais créer une chaine de caractère qui prendra pour valeur les char que je lirais d'un fichier, et mettre le tout dans un enregistrement qui sera placé dans un tableau.
Voici donc le type:
typedef struct
{
    char * nomConnecteur;
    char * contact;
} connection;

typedef connection typeTableauConnection [TAILLE_MAX];


Or je ne sais pas comment faire pour ceci. J'imagine que ca devrais ressembler à ca, mais ca ne fonctionne pas :
while(carac != 124)
{
                tableauConnections[i].contact = tableauConnections[i].contact + carac;
	carac = fgetc (fichierFil);
}

(Ne vous inquiétez pas j'incrémente i ailleur et oui fgetc renvoie un int aussi mais ca ca fera juste un warning non?).

Une aide serrait la bienvenue.

Merci . Sheeps.



A voir également:

6 réponses

cap'tain sheeps
14 avril 2011 à 14:45
J'ai essayé:
sprintf(tableauConnections[i].nomConnecteur, "%s%c", tableauConnections[i].nomConnecteur, carac);

mais ca rempli mon tableau de (null).
1
cap'tain sheeps
14 avril 2011 à 15:44
C'est bon j'ai trouvé le bouton.
en fait vu que quand je met le lien il me met ... apres
http://www.commentcamarche.net/
sans que tu puisses cliqué dessus, je l'ai mis en 2 parties
donc ca commence par
http://www.commentcamarche.net/
et ca fini par
forum/affich-21820059-probleme-de-logique-algorithmique-language-c

Ne t'inquietes pas j'ai confiance en toi =)
1
Bonjour

C'est normal que ça ne marche pas. Tu n'as aucune chaîne nulle part dans ton programme, aucun endroit pour stocker tes caractères. Tu n'as que des pointeurs.
Quand tu fais tableauConnections[i].contact = tableauConnections[i].contact + carac;, tu ajoutes quelques chose au pointeur, c'est à dire qu'au lieu de pointer à l'adresse 0 il se met à pointer à l'adresse 32 si tu as tapé un espace (code ASCII 32).
Deux méhodes parmi d'autres :
Tu définis ta structure avec des vraies chaînes ( char [xx] au lieu de char * ) et tu fais tableauConnections[i].contact[j]=carac avec j comptant les caractères. Mais tu risques de gaspiller beaucoup de mémoire en réservant toujours la place maximum et il faut faire attention à ne pas écrire au delà de la fin de la place réservée
Ou bien tu alloues la mémoire dynamiquement avec malloc, mais il faut maîtriser les pointeurs.
0
Ok ca marche ! Merci beacoup et merci encore une fois parce que tu m'as expliqué en plus.

Dis moi, je sais que ca peut parraitre abusif, mais pourrais-tu (vu que tu t'es penché sur mon problème) compléter ton aide en te penchant sur l'autre problème que j'ai?(tu peux refuser bien sur)
http://www.commentcamarche.net/
forum/affich-21821820-concatener-un-char-a-un-char-language-c#newanswer
Et peux-tu me dire comment mettre [résolu] en format correcte sur ce forum?
Merci beaucoup.
Sheeps.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pour mettre en résolu, il paraît qu'il y a un bouton chez celui qui a posé la question. Je n'ai jamais posé de question, alors je ne l'ai pas vu. Je ne suis pas sûr que ça marche pour les non inscrits.
Pour ton autre problème, je vais voir. Je ne sais pas tout !
0
heu... le lien vers ton autre problème renvoie ici ???
0