J'ai un problème dans mon code C

Fermé
nounou - Modifié par jipicy le 28/05/2010 à 19:19
 Bilow - 28 mai 2010 à 19:27
Bonjour,
ce code c ne veut pas fonctionner je veux saisir une chaine mais lors de l'exécution il fait du n'importe quoi svp aider moi a resoudre ce probleme et merci d'avance
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char *decaler_zero(char *ch,int pos)
{
int i;

if ((ch[pos]=='0')&&(pos+1<strlen(ch)))
{
for(i=pos;i<strlen(ch);i++)
ch[i]=ch[i+1];
decaler_zero(ch,pos+1);
}
return (ch);
}

int main(void)
{

char c;

char *ch1;
char *ch2;
int l;
printf("entrez votre chaine:\n");
l=strlen(ch1);
ch1=(char *)malloc(l*sizeof(char));
ch2=(char *)malloc(l*sizeof(char));


ch1[0]='0';

c=getchar();
switch(c){
case '+':ch1[0]=c; break;
case '-':ch1[0]=c; break;
case '0':ch1[0]=c; break;
case '1':ch1[0]=c; break;
case '2':ch1[0]=c; break;
case '3':ch1[0]=c; break;
case '4':ch1[0]=c; break;
case '5':ch1[0]=c; break;
case '6':ch1[0]=c; break;
case '7':ch1[0]=c; break;
case '8':ch1[0]=c; break;
case '9': ch1[0]=c; break;
ch1=(char *)realloc(ch1,(l+1)*sizeof(char));
break;
default :
break;
}
while (c!='\n')
{
l=strlen (ch1);
c=getchar();
switch(c){
case '0':ch1[0]=c; break;
case '1':ch1[0]=c; break;
case '2':ch1[0]=c; break;
case '3':ch1[0]=c; break;
case '4':ch1[0]=c; break;
case '5':ch1[0]=c; break;
case '6':ch1[0]=c; break;
case '7':ch1[0]=c; break;
case '8':ch1[0]=c; break;
case '9': ch1[l-1]=c;
ch1[l]='\0';
ch1=(char *)realloc(ch1,(l+2)*sizeof(char));
break;
default : break;
}
}
if ((ch1[0]=='+')||(ch1[0]=='-'))
decaler_zero(ch1,1);
else
decaler_zero(ch1,0);



printf("votre chaine saisie est:%s\n",ch1);
scanf("%s",ch1);
free(ch1);

return 0;
}







A voir également:

1 réponse

Salut !

Tu devrais déclarer les prototypes detes fonctions.
Puis, je doute que char *ch1; soit admis.
Essaie char ch1 [30];
Bye ;)
0