message d'erreur en C
2 participants
Page 1 sur 1
message d'erreur en C
bonjour tous le monde
g un probleme dans mon prog borland C .
quand je compile mon programme, il affiche des messages d'erreur comme "Thread stopped Fault:access violation at 0x404a53 write of adress 0xffffffff2"
sinon un autre type de message comme"Can't debug during asynchronous compile"
SVP pouvez me donner solution pour c probleme.
Et merci
g un probleme dans mon prog borland C .
quand je compile mon programme, il affiche des messages d'erreur comme "Thread stopped Fault:access violation at 0x404a53 write of adress 0xffffffff2"
sinon un autre type de message comme"Can't debug during asynchronous compile"
SVP pouvez me donner solution pour c probleme.
Et merci
bouhmid1- Messages : 2
Date d'inscription : 29/12/2008
Re: message d'erreur en C
Impossible de répondre sans voir ton code source.bouhmid1 a écrit:bonjour tous le monde
g un probleme dans mon prog borland C .
quand je compile mon programme, il affiche des messages d'erreur comme "Thread stopped Fault:access violation at 0x404a53 write of adress 0xffffffff2"
sinon un autre type de message comme"Can't debug during asynchronous compile"
SVP pouvez me donner solution pour c probleme.
Et merci
Re: message d'erreur en C
Merci pour ta reponse:
bon, sa se voit que je suis debutant en C, En fait j'ai un programme a faire 'ANAGRAMME', mais j'ai pefere a commencer par des petites fonctions,au niveau 'main' le programme fait appel a la fontion 'lire' une fois et le message d'erreur 'se declenche' SVP, j'espere bien que vous avez une solution probleme
bon, sa se voit que je suis debutant en C, En fait j'ai un programme a faire 'ANAGRAMME', mais j'ai pefere a commencer par des petites fonctions,au niveau 'main' le programme fait appel a la fontion 'lire' une fois et le message d'erreur 'se declenche' SVP, j'espere bien que vous avez une solution probleme
- Code:
#include<stdio.h>
// pour tester si les 2 mots sont egaux
int equivalente(char *u, char *v)
{
char t[100], x[100];
int i,z,k;
k=z=0;
t[0]=*u;
x[0]=*v;
for(i=0;u[i]!='\0';i++)
{
t[z]=*(u+i);
i++;
z++;
}
for(i=0;v[i]!='\0';i++)
{
x[k]=*(v+i);
i++;
k++;
}
if (z==k)
return 1;
return 0;
}
//pour lire un chaine
void lire (char t[])
{ int i;
i=0;
while(t[i]!='\n')
{
scanf("%s",t[i]);i++;
}
}
/*ce programme doit lire 2 chaines de caractere et les tester s'ils sont eguaux ou non*/
void main()
{
int n;
char *u,*v,t[1000],x[1000];
printf("donner la 1er chaine\n");
lire (t);
u=&t[0];
printf("\ndonner la 2eme chaine\n");
lire (x);
v=&x[0];
n=equivalente(u,v);
printf("%d",n);
scanf("%d",&n);
}
Dernière édition par -ed- le Mar 30 Déc 2008 - 14:11, édité 1 fois (Raison : Ajout des balise de code [code][/code]. Merci d'y penser la prochaine fois)
bouhmid1- Messages : 2
Date d'inscription : 29/12/2008
Re: message d'erreur en C
Ce code est extrêmement suspect.bouhmid1 a écrit:Merci pour ta reponse:
bon, sa se voit que je suis debutant en C, En fait j'ai un programme a faire 'ANAGRAMME', mais j'ai pefere a commencer par des petites fonctions,au niveau 'main' le programme fait appel a la fontion 'lire' une fois et le message d'erreur 'se declenche' SVP, j'espere bien que vous avez une solution probleme
- Code:
//pour lire un chaine
void lire (char t[])
{ int i;
i=0;
while(t[i]!='\n')
{
scanf("%s",t[i]);i++;
}
}
1 - Il provoque ce warning chez moi :
- Code:
C:\dev\hello\main.c: In function `lire':
C:\dev\hello\main.c:32: warning: format argument is not a pointer (arg 2)
2 - Si tu cherches à écrire une fonction de saisie, il suffit d'utiliser getchar() qui est fait pour ça :
/* pour lire un chaine */
- Code:
void lire (char t[])
{
int i;
i = 0;
while (t[i] != '\n')
{
t[i] = getchar();
i++;
}
}
D'autre part, si on est entré dans la boucle, il n'y a quasiment aucune chance d'en sortir, car on teste encore une fois une zone non initialisée de la chaine. (on stocke le caractère lu en [i], puis on teste en [i+1], caer c'est après un i++).
La forme usuelle consiste à placer le getchar() dans le while et à tester immédiatement le résultat :
- Code:
/* pour lire un chaine */
void lire (char t[])
{
int i = 0;
while ((t[i]= getchar()) != '\n')
{
i++;
}
}
- Code:
/* pour lire un chaine */
void lire (char t[])
{
int i = 0;
while ((t[i]= getchar()) != '\n')
{
i++;
}
t[i] = 0;
}
ce qui donne dans un premier temps :
- Code:
/* pour lire un chaine */
void lire (char t[], size_t size)
{
int i = 0;
while (i < size - 1 && (t[i]= getchar()) != '\n')
{
i++;
}
t[i] = 0;
}
- Code:
/* pour lire un chaine */
int lire (char t[], size_t size)
{
int err = 0;
size_t i = 0;
while (i < size - 1 && (t[i] = getchar ()) != '\n')
{
i++;
}
if (t[i] != '\n')
{
err = 1;
while (getchar () != '\n')
{
}
}
t[i] = 0;
return err;
}
Je recommande d'ailleurs de baser toute saisie ultérieure sur cette fonction.
Concernant la fonction suivante :
- Code:
/* pour tester si les 2 mots sont egaux */
int equivalente (char *u, char *v)
Comparer 2 chaine, c'est extrêmement simple, mais comme toujours, il faut réfléchir avant de coder.
1 - Il faut se souvenir qu'une chaine est une séquence de caractères terminée par un 0.
2 - il suffit de comparer les caractères de chaque chaine 2 à 2. Pour ça, une simple boucle suffit.
3 - il faut déterminer les conditions d'arrêt 'normales' (chaine identiques) et 'erronées' (chaine différentes)
Je te laisse réfléchir à ça et proposer un algorithme qui tient la toute.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum