begin process at 2012 02 13 01:28:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

'strcat' : cannot convert parameter 2 from 'char' to 'const char *'


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

'strcat' : cannot convert parameter 2 from 'char' to 'const char *'

dimanche 14 octobre 2007 à 09:34:21 | 'strcat' : cannot convert parameter 2 from 'char' to 'const char *'

daviddubois

Bonjour tout le monde,

J'essaie de faire un petit programme qui permet lorsqu'il rencontre deux voyelles l'une à côté de l'autre de mettre un v entre ces deux voyelles.

Je pense que mon algorithme est correcte mais j'ai un problème à la compilation.

Cette exercice est surtout là pour utiliser les différentes fonctions sur les chaines de caratères (strcat, strlen, strcpy...)

Voici mon code :

#include <BasicConsole.h>

inr main(void)
{
 char voyelles[] = {'a','e','i','o','u','y'};
 char phrase[200];
 char phrase2[200];
 char caractere1;
 char caractere2;
 char MotEnJavanais[50];
 char AAjouter = 'v';
 int i;
 //char caracteres[2];

 printf("Veuillez svp encodez une phrase, je vais vous la traduire en javanais\n");

 gets(phrase);

 printf("la phrase est %s \n",phrase);

 int taille = strlen(phrase);

 for (i =0; i<taille-1;i++)
 {
  
  //caractere1 = phrase[i];
  //caractere2 = phrase[i+1];
  //printf("%c %c ",caractere1, caractere2 );

   if (((phrase[i] =='a')||(phrase[i] == 'e')||(phrase[i] == 'i')||(phrase[i] == 'o') || (phrase[i] == 'u') || (phrase[i] == 'y'))&&((phrase[i]+1 =='a')||(phrase[i]+1 == 'e')||(phrase[i]+1 == 'i')||(phrase[i]+1 == 'o') || (phrase[i]+1 == 'u') || (phrase[i]+1 == 'y')))
   {
    printf("OK\n");
    strcat(phrase2,phrase[i]);
    strcpy(phrase2 + strlen(phrase[i]+1),"v");
    //strcat(MotEnJavanais,AAjouter);
    //strcat(MotEnJavanais,caractere2);
   
    
   }
    
    else
    strcat(phrase2,phrase[i]);

 
 }

return 0;
}

J'essaie donc de voir si la valeur de phrase[0] est une voyelle ET si le caractère d'à côté est aussi une voyelle, si c'est le cas, je concatène le caractère dans le tableau (avec strcat), je copie ensuite le v dans le tableau, à la position de la valeur que je viens d'entrer  +1, autrement, je ne fait que concaténer le caractère (dans le else).

J'obtiens 3 messages d'erreur :

'strcat' : cannot convert parameter 2 from 'char' to 'const char *'
'strlen' : cannot convert parameter 1 from 'char' to 'const char *'
'strcat' : cannot convert parameter 2 from 'char' to 'const char *'

Il y'a quelque chose que je n'ai pas compris

Merci d'avance pour votre aide.

David

dimanche 14 octobre 2007 à 10:08:45 | Re : 'strcat' : cannot convert parameter 2 from 'char' to 'const char *'

The_Guardian

Bonjour,

Désolée mais y'a vraiment tout à refaire là. Tu n'as vraiment pas compris je pense au strcpy et strcat.

OK strcpy ça va copier une chaine dans une autre en s'arrêtant au caractère de fin de chaine, le \0 
Et strcat ça va concaténer une chaine dans une autre en s'arrêtant aussi au \0 
Ok, pour cet exercice, tu n'as pas à utiliser l'un ou l'autre car tu fais de la copie caractère par caractère
en gros, qu'est-ce que tu dois faire ?

indiceDansChaine1 <-- 0
indiceDansChaine2 <-- 0
tantque chaine1[indiceDansChaine1]!=\0 faire
si estUneVoyelle(chaine1[indiceDansChaine1]) et estUneVoyelle(chaine1[indiceDansChaine1+1]) alors
chaine2[indiceDansChaine2] = chaine1[indiceDansChaine1]
chaine2[indiceDansChaine2+1] <-- 'v'
 indiceDansChaine2 <-- indicDansChaine2+2
  sinon
 chaine2[indiceDansChaine2] <-- chaine1[indiceDansChaine1]
 indiceDansChaine2 <-- indiceDansChaine2+1
finsi
 indiceDansChaine1 <-- indiceDansChaine1+1
 fintantque
 chaine2[indiceDansChaine2] <-- '\0'
tu vois ? tu utilises 2 indices différents pour parcourir tes chaines et des copies de caractère et le tour est joué

===


Une autruche ne se cuit pas aux petits lardons
dimanche 14 octobre 2007 à 11:09:39 | Re : 'strcat' : cannot convert parameter 2 from 'char' to 'const char *'

daviddubois

Bonjour The Guardian,

Merci pour ton alogortihme.

Le Tant que != \O est ok

Par contre, si je tape comme phrase "marco" par exemple, il n'y a pas de voyelle qui sont contigue mais il dès qu'il rencontre une voyelle, il rentre dans le if et exécute les instructions.

Voici mon if :

if((phrase[indice1]=='a')||(phrase[indice1]=='e')||(phrase[indice1]=='i')||(phrase[indice1]=='o')||(phrase[indice1]=='u')||(phrase[indice1]=='y') && (phrase[indice1+1]=='a')||(phrase[indice1+1]=='e')||(phrase[indice1+1]=='i')||(phrase[indice1+1]=='o')||(phrase[indice1+1]=='u')||(phrase[indice1+1]=='y'))
{
   printf("ok");
  }
    
  indice1++;

Quand je suis en mode débogage, je met le curseur sur phrase, il m'indique "marco", je met mon curseur sur le indice, il me met 0 (au premier passage de la boucle while) mais je ne sais jamais savoir réellement ce que vaut phrase[indice], y'a-t'il moyen de voir la valeur de phrase[indice]

Merci encore pour ton aide.

beegees
dimanche 14 octobre 2007 à 12:48:32 | Re : 'strcat' : cannot convert parameter 2 from 'char' to 'const char *'

The_Guardian


OK,

bon attend je je fais le code, ca prend deux minutes, et tu vas comprendre.

#include <stdio.h>
#include
<stdlib.h>
 
#define
MAX_JAVANAIS 200
 
char * calculerJavanais(char * mot);
int estVoyelle(char lettre);
 
int main(int argc, char ** argv) {
        char * javanais; if (argc!=2) {
                printf("Syntax: %s mot\n", argv[0]);
                return 1;
        }
        javanais = calculerJavanais(argv[1]);
        printf("javanais=%s\n", javanais);
        free(javanais);
        return 0;
}
 
char * calculerJavanais(char * mot) {
        char * javanais;
        int indexDansMot, indexDansJavanais;
        indexDansMot = 0;
        indexDansJavanais = 0;
        javanais = (char *)malloc((MAX_JAVANAIS+1)*sizeof(char));
        while (mot[indexDansMot]!=0) {
                if (estVoyelle(mot[indexDansMot]) && estVoyelle(mot[indexDansMot+1])) {
                        javanais[indexDansJavanais] = mot[indexDansMot];
                        javanais[indexDansJavanais+1] = 'v';
                        indexDansJavanais = indexDansJavanais+2;
                }
                else {
                        javanais[indexDansJavanais] = mot[indexDansMot];
                        indexDansJavanais = indexDansJavanais+1;
                }
                indexDansMot = indexDansMot+1;
        }
        javanais[indexDansJavanais] = '\0';
        return javanais;
}
 
int estVoyelle(char lettre) {
        if ((lettre=='a') || (lettre=='e') || (lettre=='i') || (lettre=='o') || (lettre=='u') || (lettre=='y')) {
                return 1;
        }
        else {
                return 0;
        }
}

Je l'ai mis ici au pire: [ Lien ]
j'ai testé ca marche :p
===





Une autruche ne se cuit pas aux petits lardons
dimanche 14 octobre 2007 à 13:21:55 | Re : 'strcat' : cannot convert parameter 2 from 'char' to 'const char *'

daviddubois

Merci beaucoup the guardian pour ce code est surtout pour le temps que tu as consacré.

Entre ma dernière réponse et ta réponse, j'ai pas mal cherché et je suis arrivé à quelque chose qui fonctionne.

En plus de cela, j'utilise strcpy et strlen qui était quand même le but de cet exercice.

Voici mon code, sais-tu me dire ce que tu en pense ?

#include <BasicConsole.h>

void main()
{
 char phrase[200];
 char phrase2[200];
 int indice1 = 0;
 int indice2 = 0;
 char AAjouter = 'v';
 int i=0;
 
 printf("Veuillez svp encodez une phrase, je vais vous la traduire en javanais\n");

 gets(phrase);

 int taille = strlen(phrase);

 while(phrase[indice1]!='\0')
 {
  if(((phrase[indice1]=='a')||(phrase[indice1]=='e')||(phrase[indice1]=='i')||(phrase[indice1]=='o')||(phrase[indice1]=='u')||(phrase[indice1]=='y')) && ((phrase[indice1+1]=='a')||(phrase[indice1+1]=='e')||(phrase[indice1+1]=='i')||(phrase[indice1+1]=='o')||(phrase[indice1+1]=='u')||(phrase[indice1+1]=='y')))
  {
   phrase2[indice2] = phrase[indice1];
   strcpy(phrase2+(indice2+1),"v");
   //printf("phrase2 vaut %s",phrase2);
   indice2+=2;
   indice1++;
  }
  else
  {
   phrase2[indice2] = phrase[indice1];
   indice2++;
   indice1++;
  }

  
    
  
 }
 strcpy(phrase2+(indice2),"\0");

 indice2 = 0;

 while(phrase2[indice2]!='\0')
 {
  printf("%c",phrase2[indice2]);
  indice2++;
 }
 
}

Je teste ton code, merci encore pour ton dévouement.

David

dimanche 14 octobre 2007 à 15:03:01 | Re : 'strcat' : cannot convert parameter 2 from 'char' to 'const char *'

The_Guardian

Re,

oui ça devrait marcher ton code :p
y'a deux lignes que tu pourrais changer si tu veux
pour utiliser strcat au lieu de strcpy
tu utilises strcpy sur des chaines d'un seul caractère (ou deux dans le cas du "v", en comptant le '\0')
pourquoi pas
si tu t'assurais que chaine2 est remplie entièrement de \0
tu pourrais aussi utiliser strcat pour ajouter une chaine à la fin de la chaine
exemple:
strcat(chaine2, "v"); va ajouter la lettre 'v' tout à la fin de la chaine2
===

Une autruche ne se cuit pas aux petits lardons


Cette discussion est classée dans : char, strcat, phrase, convert, cannot


Répondre à ce message

Sujets en rapport avec ce message

empoisonné par "cannot convert parameter 1 from 'char *' to 'char'" [ par thejojo1 ] bonjour tout le monde. Ne rigolez pas surtout c'est pas évident de démarrer en c++ quand on a fait du delphi ou du vb.Voila mon souci:je voudrai affic cannot convert [ par juju0612 ] salut quand je compile il me mets et je ne sais pas comment ressoudre cette erreur!! (293)cannot convert char* to char(299)cannot convert char to char unhandled exception... [ par ganfoud ] j'ai droit au message d'erreur unhandled exception in calcul.exe: 0xC0000005 Access Violation sous VC++et le curseur du debugger me place dans la fonc strcat [ par gbourgeois0019 ] char szBuff[256];char cBuff = 'A';strset(szBuff,'\0');strcat(szBuff,&cBuff);C'est normal que ca plante a l'appel de strcat ? Si oui pourquoi ?Merci a aide morse [ par cobra176 ] bonjour a tousje dois faire un programme qui changer les lettres normal en morse et inversementvoici le debut  de mon code# include # include # includ aide c++ structure [ par buse974 ] salut tout le monde je prend des cour par le cned et j'ai un exo qui me cause probleme je doit cree un programme qui traduit une phrase taper en code Execution d'une commande [ par laetitiavincent ] Bonjour tout le mondeQuelqu'un pourrait m'aiderJe cherche comment dans un programme en c lancer une commande simple sous dos : en fait je voudrais fai strcat : fonction( char* buffer, int nb ); [ par wizard512 ] Bonsoir,Je souhaiterais savoir Si une fonction similaire a strcat() existerais,mais qui ajoute un entier ( int ) dans une strcat perso [ par Yarael92 ] on me demande d'ecrire une version perso de strcat et voila ce ke je fé sauf que ya un probleme au niveau de la 2eme chaine copié.Voyez vous mon erreu concaténuation de chaine [ par romainbisson ] je voudrais mettre au bout d'une chaine de caractere (ligne) un caractere (caractere) donc j'utilise strcat mais il me donne les erreurs suivantes :Mo


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,498 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales