concatenation des chaines
bonjour,
j'ai un exercice difficille pour moi je voudrais que vous m'aidez a le resoudre:
je voudrais creer un programme qui concatene deux chaines de carecteres, representant par exemple prénom et nom.
pour stocker les données, de type chaîne de carectère de chaque chaîne est fixé à 10. Pour le resultat, je voudrais seulment le voir imprimé :
la place qu'il occupe est attribuée dynamiquement puis libérée.
je vous remercie
concatenation des chaines
Citation:
Envoyé par
Médinoc
Eh bien quel est ton problème pour cet exercice ?
- Un problème d'allocation dynamique ?
- Un problème de longueur ?
- Un problème de recopie ?
je suis entraine d'apprendre le language C, j'ai une serie d'exercice que je voulaiq le resoudre si ça vous darange pas de m'aidez ce sera gentille de votre part.
Cordialement
concatenation des chaines
Citation:
Envoyé par
Médinoc
Sur dvp.com, on ne fera pas ton exercice pour toi.
Mais on t'aidera. Il suffit que tu postes ton code actuel et que tu indiques les points surs lesquels tu as des problèmes.
- Normalement, tu es censé savoir ce qu'est l'allocation dynamique, non ?
oui tu as raison
je vais essayer de le faire apré je vous l'envoies sachant que je sais pas comment debuter.
cordialement
concatenation des chaines
Citation:
Envoyé par
hegros
Est-ce que tu as le droit(car cela arrive que ce ne soit pas le cas) d'utiliser la librairie standard du C ?
Ensuite as-tu un mini algo qui permet de décrire ce que tu dois programmer ? (avec toutes les variables dont tu as besoin, les fonctions etc..)
Oui j'ai le droit d'utilisé la librairie standard du C.
concatenation des chaines
salut,
je voudrais que vous m'aider voila mon Prog qui donne des bonne resultat (concatenation des chaines):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <stdio.h>
# include <stdlib.h>
#include <string.h>
int main (){
char prenom [10];
printf("Donnez une chaine de caracteres (10 caracteres au maximum): ") ;
scanf("%s",prenom);
printf("%s\n",prenom);
char nom[10];
puts("Donnez une chaine de caracteres (10 caracteres au maximum):");
scanf("%s",nom);
char *ens=malloc((strlen(prenom)+strlen(nom))*sizeof(char));
int i;
for(i=0;i<strlen(nom)-1;i++)
printf("%c",nom[i] );
for(i=0;i<strlen(*prenom)-1;i++)
ens[i]=prenom[i];
for(i=0;i<strlen(*nom);i++)
ens[i+strlen(*prenom)]=nom[i];
printf("%s",ens);
return 0;
} |
Je vous remercie en avance:)
concatenation des chaines
Je suis desolé le programme ne donne pas des bonne resultats.
Cordialement
concatenation des chaines
Citation:
Envoyé par
Médinoc
Sur dvp.com, on ne fera pas ton exercice pour toi.
Mais on t'aidera. Il suffit que tu postes ton code actuel et que tu indiques les points surs lesquels tu as des problèmes.
- Normalement, tu es censé savoir ce qu'est l'allocation dynamique, non ?
salut,
je voudrais que vous me corriger ce code voila:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <stdio.h>
# include <stdlib.h>
#include <string.h>
int main (){
char prenom [10];
printf("Donnez une chaine de caracteres (10 caracteres au maximum): ") ;
scanf("%s",prenom);
printf("%s\n",prenom);
char nom[10];
puts("Donnez une chaine de caracteres (10 caracteres au maximum):");
scanf("%s",nom);
char *ens=malloc((strlen(prenom)+strlen(nom))*sizeof(char));
int i;
for(i=0;i<strlen(nom)-1;i++)
printf("%c",nom[i] );
for(i=0;i<strlen(*prenom)-1;i++)
ens[i]=prenom[i];
for(i=0;i<strlen(*nom);i++)
ens[i+strlen(*prenom)]=nom[i];
printf("%s",ens);
return 0;
} |
merci
concatenation des chaines
Citation:
Envoyé par
Thierry Chappuis
Voici quelques corrections:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fclean(char *s_buffer, FILE *fp);
int main(void)
{
/* -tc- En C90, il est necessaire de définir les variables au
* debut d'un bloc.
*/
char prenom[10] = "";
char nom[10] = "";
char *ens = NULL;
int ret = EXIT_SUCCESS;
/* -tc- Attention, les tableaux de caractères prenom et nom sont
* limites a 9 caracteres, le 10eme etant reserve au caractere nul.
*/
printf("Donnez une chaine de caracteres (10 caracteres au maximum): ") ;
/* -tc- on force l'affichage de l'invite */
fflush(stdout);
/* -tc- Il n'est pas conseille d'utiliser scanf() pour la saisie de chaines
* de caracteres formatees. Essaie plutot avec fgets()
scanf("%s",prenom); */
fgets(prenom, sizeof prenom, stdin);
fclean(prenom, stdin);
printf("%s\n", prenom);
puts("Donnez une chaine de caracteres (10 caracteres au maximum): ");
fflush(stdout);
fgets(nom, sizeof nom, stdin);
fclean(nom, stdin);
/* -tc- Attention d'allouer l'espace pour le caractere nul de fin de
* chaine. Par ailleurs, sizeof(char) vaut 1 par definition.
*/
ens = malloc((strlen(prenom) + 1 + strlen(nom) + 1) * sizeof *ens);
/* -tc- TOUJOURS verifier que l'allocation a reussi */
if (ens != NULL)
{
ens[0] = 0;
strcat(ens, prenom);
strcat(ens, " ");
strcat(ens, nom);
printf("%s\n",ens);
}
else
{
fprintf(stderr, "Erreur d'allocation!\n");
ret = EXIT_FAILURE;
}
return ret;
}
/**
* Elimine le caractere de fin de ligne saisi par fgets() et fait le menage
* sur le flux entrant en cas de saisie tronquee.
*/
void fclean(char *s_buffer, FILE *fp)
{
if (s_buffer != NULL && fp != NULL)
{
char *pc = strchr(s_buffer, '\n');
if (pc != NULL)
{
*pc = 0;
}
else
{
int c;
while ((c = fgetc(fp)) != '\n' && c != EOF)
{
}
}
}
} |
Thierry
ça marche bien
Je te remercie beaucoup plus l'infini.
:yaisse2: