C -conserver caract. compris entre m et n

Résolu/Fermé
'sop Messages postés 12 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 5 juillet 2009 - 3 févr. 2009 à 16:35
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 3 févr. 2009 à 16:52
Bonjour,

je demande votre aide pour établir un petit programme en C qui permettrait de ne conserver que les caractères compris entre la m et n ième position d'une variable.

Exemple

char *info = "programmation";

on veut conserver uniquement les caractères de la variable info, qui sont compris entre 3 et 8
cela donnerait en sortie "ogrammat".
Il n'y a que je sache aucun fonction de la librairy string qui fasse cela.

Je vous remercie pr votre aide.

3 réponses

Bonjour

Tu peux aller voir ce lien tu auras, je pense, toutes les info nécessaire

Bon courage

https://codes-sources.commentcamarche.net/

Salima
0
gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
3 févr. 2009 à 16:42
include <stdio.h>

char *substring(size_t start, size_t stop, const char *src, char *dst, size_t size)
{
int count = stop - start;
if ( count >= --size )
{
count = size;
}
sprintf(dst, "%.*s", count, src + start);
return dst;
}

int main()
{
static const char text[] = "The quick brown fox jumps over the lazy dog.";
char a[10], b[5];
printf("substring = \"%s\"\n", substring(4, 13, text, a, sizeof a));
printf("substring = \"%s\"\n", substring(4, 13, text, b, sizeof b));
return 0;
}

/* my output
substring = "quick bro"
substring = "quic"
*/
0
gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
3 févr. 2009 à 16:45
Sinon avec strncat :


int main() {
char *str1 = "It is ";
char *str2 = "raining sunny snowing foggy";
char *str3;

str3 = (char *)calloc(strlen(str1) + strlen(str2), sizeof(char));

strcpy(str3, str1);
strncat(str3, str2+8, 5);

printf("str3: %s\n", str3);

free(str3);

return 0;
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842 > gigaga Messages postés 2346 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014
3 févr. 2009 à 16:52
Salut,
str3 = (char *)calloc(strlen(str1) + strlen(str2), sizeof(char));
N'oublie pas d'ajouter +1.
str3 = malloc(strlen(str1) + strlen(str2) +1); 


Si tu veux faire une duplication, tu peux tout simplement utiliser strdup (malloc + strcpy).
0
'sop Messages postés 12 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 5 juillet 2009
3 févr. 2009 à 16:48
merci a vous. Je vais de ce pas jeter un coup d'oeil.

gigaga, ton code fait exactement ce que je voulais, merci bien ;-)
0