Une fonction qui remplace les espace par '-'

bismail2 Messages postés 13 Statut Membre -  
Canard007 Messages postés 5936 Statut Contributeur -
Pouvez vous me dire pourquoi ce programme affiche ---------------- à la place de Salut-camarade-- et n a la valeur de 16 à la place de 3

#include <stdio.h>

char* remplace(char *chaine)
{
static int n;
int i;
for(i=0; *(chaine+i)!='\0'; i++)
{
if (*(chaine+i)='\0x20')
{
*(chaine+i)='-';
n++;
}
else
;
}
return chaine;
}

int main(int argc, char *argv[])
{
char* n;
char chaine[100]="Salut camarade ";
n=remplace(chaine);
printf("%s", n);
getchar();
return 0;
}

Merci
A voir également:

7 réponses

Abraxas
 
tu as seulement été un pe distrait avec ton test:
if (*(chaine+i)='\0x20')
devrait etre:
if (*(chaine+i)=='\0x20')

l'affectation (=) est toujours vraie, contrairement à la comparaison
a+
0
Jolkdarr Messages postés 10 Statut Membre 1
 
Hello !

Faux. L'affectation n'est vraie que si une expression non nulle est affectée à une lvalue (ici, *(chaine+i) ).
0
Canard007 Messages postés 5936 Statut Contributeur 215
 
enfin faut mettre == et non pas = c'est pas une affectation qu'il veut mais une comparaison on va pas chipoter ^^
de toutes maniere moi je conseil strcmp pour la comparaison de chaine de carateres...

COIN!
0
Jolkdarr Messages postés 10 Statut Membre 1
 
Sans vouloir chipoter, ce n'est pas une comparaison de chaînes de caractères mais une comparaison de caractères.

À noter :
Vaut mieux écrire Chaine[i]
au lieu de *(Chaine + i)
c'est plus clair et plus utilisé.
0

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

Posez votre question
Canard007 Messages postés 5936 Statut Contributeur 215
 
ca depend du programmeur je dirai..
et oui effectivement c'est un comparaison de cahr j avais juste regardé la declaration...^^
Quand a la syntax finalement c'est au bon vouloir du programmeur finalement tant que tout est correctement commenté ;-)

COIN!
0
Jolkdarr Messages postés 10 Statut Membre 1
 
Justement non. Ce n'est pas au "bon vouloir" du programmeur. Quand tu bosses sur un gros projet de plusieurs dizaines de programmeurs. Tu imagines le manque de cohérence si chacun fait ce qu'il veut. Pour tout langage, il y a des règles et des recommandations de codage qui permettent de résoudre en partie le problème inhérent à la présence de plusieurs développeurs.
0
Canard007 Messages postés 5936 Statut Contributeur 215
 
Oui mais la :
1- je pense pas qu'il soit dans une boite
2-Ces regles sont inherente a la société et peuvent varié de l'une à l'autre.
3- je ne dit pas de faire cequ'il veut mais bon l'objectif etant de faire des modules tant que les entrée sortie sont definis et qu'il n'y a pas d'effet de bords et que la performance est bonne on ne va pas revenir sur ton code car la façon dont tu fait ta boucle ne convient pas a ton voisin...

COIN!
0