Le C

Fermé
Brohs Messages postés 25 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 4 novembre 2011 - Modifié par irongege le 15/08/2011 à 12:36
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 15 août 2011 à 20:54
Bonjours à vous !

J'ai un petit soucie j'ai écris un code, et il me met :

Warning: initialization makes integer from pointer without a cast
Warning: initialization makes integer from pointer without a cast

C'est 2 phrase signifie qu'il y a un problème dans l'une des mes phrase mes je ne voie pas ou.

Et mon programme que j'essaye de faire es de créer un programme qui me demande de changer une lettre par une autre et de valider. ( C'est le prog qui me le demande )

Donc voilà.

je vous montre mon code :




#include <string.h> 
#include <stdio.h> 
  
int CharToChar(char sString[], char sResult[], char cChar1, char cChar2) 
{ 
  int i       = 0; 
  int iLength = strlen(sString); 
  int iResult = 0; 
  
  for(i = 0; i < iLength; i++) 
    { 
      sResult[i] = sString[i]; 
  
      if(sString[i] == cChar1) 
 { 
   sResult[i] = cChar2; 
   iResult    = 1; 
 } 
    } 
  
  return iResult; 
} 
  
  
int main() 
{ 
  char sString[256] = "Salut, je suis brohs et je suis fort !"; 
  char cChar1       = ""; 
  char cChar2       = ""; 
  char sResult[256] = ""; 
  int  iResult      = 0; 
  
  printf("Phrase de base: %s\n", sString); 
  
  iResult = CharToChar(sString, sResult, cChar1, cChar2); 
  
  if(iResult == 0) 
    { 
      printf("Rien n'a change !\n"); 
    } 
  
  printf("Nouvelle phrase: %s\n", sResult); 
  
  return 0; 
}





merci de bien pouvoir m'aider.

Brohs

3 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
15 août 2011 à 13:51
Dans le main, cChar1 et cChar2 sont des char, tu ne peux pas les initialiser avec ""
Tu peux par exemple faire cChar1='o' et cChar='a' pour remplacer tous les o par a.
Tu peux également te passer de certaines variables inutiles et raccourcir ton code.

Dans CharToChar il faut placer un '\0' à la fin de sResult, par exemple en positionnant iLength sur strlen(sString)+1
De plus tu as deux fois sResult[i] = Il vaudrait mieux te servir du else dans ce cas.
Et quitte à avoir un entier en retour, pourquoi ne pas indiquer le nombre de changement effectués ?

#include <string.h> 
#include <stdio.h> 
  
int CharToChar(char* sString, char* sResult, char cChar1, char cChar2) 
{
	int i;
	int iLength = strlen(sString)+1;
	int iResult = 0;
	
	for (i=0; i<iLength; i++)
	{
		if (sString[i]==cChar1)
		{
			sResult[i] = cChar2;
			iResult++; 
		}
		else
		{
			sResult[i] = sString[i]; 
		}
	} 

	return iResult; 
}   
  
int main() 
{ 
	char* sString = "Salut, je suis brohs et je suis fort !"; 
	char sResult[BUFSIZ];
	
	int iResult = CharToChar(sString, sResult, 'o', 'a');
	
	printf("%d changement(s)\n",iResult);	
	printf("Phrase de base : %s\n", sString);
	printf("Nouvelle phrase: %s\n", sResult);
	
	return 0; 
}
2
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 339
15 août 2011 à 13:40
  char cChar1       = 0; 
  char cChar2       = 0; 
1
Brohs Messages postés 25 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 4 novembre 2011
15 août 2011 à 20:08
http://www.siteduzero.com/forum-83-679931-p1-le-c.html

Si quelqu'un peut y aller et y répondre aussi.
SVP

Merci.
-2
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
15 août 2011 à 20:54
oui, mais non... sinon on ne s'en sort plus !
0