erreur besoin d'aide

erreur besoin d'aide - C - Programmation

Marsh Posté le 08-01-2012 à 18:36:19    

Bonsoir,
 
j'ai un problème dans mon code à la ligne 11, l'erreur est la suivante: note: expected 'const char *' but argument is of type 'char'
 
undefined reference to `len'
 

Code :
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main(){
  4.     int i=0;
  5.     int taille;
  6.     char mot;
  7.     char tab[30];
  8.     printf("choisissez un mot\n" );
  9.         scanf("%s", &mot);
  10.     strcpy(tab,mot);
  11.     taille=len(tab);
  12.     for(i=0; i<taille; i++){
  13.         tab[i]=tab[6-i];
  14.         if(i==6-i){
  15.             break;
  16.         }
  17.     }
  18.     printf(tab);
  19. }

Reply

Marsh Posté le 08-01-2012 à 18:36:19   

Reply

Marsh Posté le 08-01-2012 à 18:48:42    

mot c'est qu'un seule caractère, plutôt &mot dans le strcpy ?
Ou alors fais de mot un char*, parce que là, sur ton scanf tu reçevra qu'une seule lettre
 
et la fonction len() doit ni être dans stdio, ni dans stdlibs


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 08-01-2012 à 18:59:50    

Ok alors j'ai mis string.h, et effectivement ça fonctionne avec &mot dans le strcpy  
merci

Reply

Marsh Posté le 08-01-2012 à 19:04:46    

Par contre c'est bizarre  
Normalement le programme doit inverser le sens des lettre d'un mot  
et quand je met bonjour ça fait ruojour
à la place de ruojnob

Reply

Marsh Posté le 08-01-2012 à 19:17:58    

london_fever a écrit :

Bonsoir,
 
j'ai un problème dans mon code à la ligne 11, l'erreur est la suivante: note: expected 'const char *' but argument is of type 'char'
 
undefined reference to `len'
 

Code :
  1. char mot;
  2.      scanf("%s", &mot);



Tu as conscience que tu ne réserve qu'un seul octet pour recevoir ta saisie et que tu demandes d'y ranger un mot (donc composé de plusieurs octets!)
change en:

Code :
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main(){
  4.     int i=0;
  5.     int taille;
  6.     char mot[10]; // ton mot peut être composé de 9 lettres + le \0 final
  7.     char tab[30];
  8.     printf("choisissez un mot\n" );
  9.         scanf("%s", &mot);  //scanf n'est pas sécurisée, il remplira mot avec autant de lettre que tu lui fournira! vaut mieux mettre scanf("%9s", &mot); // pour limiter la lecture de scanf a 9 lettres (sinon plantage/comportement indéfini!)
  10.     strcpy(tab,mot); // maintenant ca marche tel que
  11.     taille=strlen(tab); //
  12. ...
  13. }


Pour l'inversion de lettre c'est normal
# for(i=0; i<taille; i++){
#         tab[i]=tab[6-i];  // tu *écrases* la valeur de début et tu la remplaces par la valeur de fin
#         if(i==6-i){
#             break;
#         }
#     }
On te t'as jamais dis que pour échanger 2 valeurs en informatique on est obligé de passer par une troisième variable?


Message édité par breizhbugs le 08-01-2012 à 19:20:46

---------------
Seul Google le sait...
Reply

Marsh Posté le 08-01-2012 à 22:53:21    

Ha yep c'est bon j'ai créer une autre variable pour échanger les valeurs merci beaucoup

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed