Comment modifier une chaîne de caratères en C

Résolu/Fermé
dekl38 Messages postés 158 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 6 avril 2016 - 7 juin 2012 à 11:03
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 8 juin 2012 à 00:47
Bonjour,

Je souhaite créer un programe qui va analyser une chaîne de caractères et si il trouve un .c le transforme en .o

Mon problème est que je ne sais pas comment analyser et modifier une chaîne de caractères, pouvez-vous m'aider ?

merci :)

pour le moment je n'ai que ça :

#include <stdio.h>

int main (int argc, char*argv[]){
int i;
int nbarg;
for (i=1;i<argc;i++){



A voir également:

4 réponses

dekl38 Messages postés 158 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 6 avril 2016 12
7 juin 2012 à 18:21
j'ai finalement fait ça :

#include <stdio.h>
#include <string.h>

int main (int argc, char*argv[]){
int i,j;
int length;
char *argx;
for (i=1;i<argc;i++){
argx = argv[i];
length = strlen(argv[i]);
if (length>2){
if (argx[length-1]=='c'&& argx[(length-2)]== '.') {
argx[length-1]='o';
printf("%s ",argx);
}
}
}
printf("\n");
return 0;
}



je penserai à ce forum quand j'aurai un autre probleme, merci :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
7 juin 2012 à 22:19
Bonjour,
Ta solution n'est pas correcte. Tu ne peux pas modifier la chaîne argv[i], si tu le fais tu t'exposes à un segfault.
Il te faut utiliser un tableau dynamique (malloc en utilisant argc et strlen(argv[i])). Tu recopieras avec strcpy. Et enfin, tu pourras utiliser ta boucle sur le tableau.
0
samossaad Messages postés 72 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 7 juin 2012 1
7 juin 2012 à 23:58
son programme fonctionne parfaitement pourtant
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
8 juin 2012 à 00:47
Effectivement, j'ai rien dit :/
0