Je vais essayer de trouver l'erreur avant de lire vos r=E9ponses et/ou
conseils que j'accueillerais avec plaisir. Sur les r=E9sultats de
google, stack smashing detected semble =EAtre une erreur dure =E0 trouver.
Pour le code ci-dessous, c'est un exercice que j'ai =E9cris une dizaine,
vingtaine de fois voire +. Mais =E7a fait d=E9j=E0 quelques semaines et je
ne sais plus o=F9 sont les fichiers...En plus, il y a de nombreuses
fa=E7ons diff=E9rentes d'=E9crire, lire un fichier en tant que d=E9butant a=
vec
des fonctions simples...
Le code o=F9 se trouve l'erreur :
/*
* lire data15a.txt et supprimer les enreg. dont le no. est inferieur a
5 et copier
* dans data15rev.txt
*/
int Ticket ; char FNom[CRECMAX] ; char FPren[CRECMAX] ;
if ((MP_SOURCE = fopen(MP_Name, "r")) == NULL) fputs("Impossible d'ouvrir le fichier", stderr) ; else while (fscanf(MP_SOURCE, "%d%s%s", &Ticket, FNom, FPren) == 3) printf("%dn%sn%sn", Ticket, FNom, FPren) ;
printf("nn") ; return 0 ; }
Est-ce que c'est autant fonctionnel que le code "blindé" qui fait appel au préprocesseur? Je ne connais pas encore bien le rôle du préprocesseur sauf que c'est une histoire de registres plutôt que de mémoire ram? Je vais faire une recherche quand je serais face à un exercice... Il me semble aussi qu'il y a beaucoup de code preprocesseur pour la programmation d'un système d'exploitation. C'est pour facilité l'accès au hardware et accélerer le traitement (signal video, son, clavier...) ?
Merci pour un usage du français plus "relaxe" dans la mesure du possible.
Merci
On 4 oct, 17:41, Tonton Th <t...@la.bas.invalid> wrote:
On 10/04/2010 12:52 AM, bpascal...@googlemail.com wrote:
> de vue de sa forme (l'icone existe toujours).
Lol !
--
Ma coiffeuse est formidable -http://sonia.buvette.org/
Ce code est très ordinaire mais il résoud le problème d'affichage
écran sur un fichier texte:
int Ticket ;
char FNom[CRECMAX] ;
char FPren[CRECMAX] ;
if ((MP_SOURCE = fopen(MP_Name, "r")) == NULL)
fputs("Impossible d'ouvrir le fichier", stderr) ;
else
while (fscanf(MP_SOURCE, "%d%s%s", &Ticket, FNom, FPren) == 3)
printf("%dn%sn%sn", Ticket, FNom, FPren) ;
printf("nn") ;
return 0 ;
}
Est-ce que c'est autant fonctionnel que le code "blindé" qui fait
appel au préprocesseur? Je ne connais pas encore bien le rôle du
préprocesseur sauf que c'est une histoire de registres plutôt que de
mémoire ram? Je vais faire une recherche quand je serais face à un
exercice... Il me semble aussi qu'il y a beaucoup de code
preprocesseur pour la programmation d'un système d'exploitation. C'est
pour facilité l'accès au hardware et accélerer le traitement (signal
video, son, clavier...) ?
Merci pour un usage du français plus "relaxe" dans la mesure du
possible.
int Ticket ; char FNom[CRECMAX] ; char FPren[CRECMAX] ;
if ((MP_SOURCE = fopen(MP_Name, "r")) == NULL) fputs("Impossible d'ouvrir le fichier", stderr) ; else while (fscanf(MP_SOURCE, "%d%s%s", &Ticket, FNom, FPren) == 3) printf("%dn%sn%sn", Ticket, FNom, FPren) ;
printf("nn") ; return 0 ; }
Est-ce que c'est autant fonctionnel que le code "blindé" qui fait appel au préprocesseur? Je ne connais pas encore bien le rôle du préprocesseur sauf que c'est une histoire de registres plutôt que de mémoire ram? Je vais faire une recherche quand je serais face à un exercice... Il me semble aussi qu'il y a beaucoup de code preprocesseur pour la programmation d'un système d'exploitation. C'est pour facilité l'accès au hardware et accélerer le traitement (signal video, son, clavier...) ?
Merci pour un usage du français plus "relaxe" dans la mesure du possible.
Merci
Samuel DEVULDER
Le 08/10/2010 00:54, a écrit :
Est-ce que c'est autant fonctionnel que le code "blindé" qui fait appel au préprocesseur?
Quel appel? Il n'y a pas d'appel du préprocesseur dans le code. Le préprocesseur est appelé par le compilo avant de faire le travail de compilation.
Je ne connais pas encore bien le rôle du
préprocesseur sauf que c'est une histoire de registres plutôt que de mémoire ram?
Non rien à voir. Pre-processing signifié pré-traitement. C'est à dire avant la compilation à proprement parler. Le préprocesseur, c'est grosso-merdo un truc qui modifie le code source avant que le compilateur le transforme en code machine. En simplifiant à mort c'est comme si tu faisais une suite de rechercher/remplacer dans le texte. (pense à la fonction "remplacer-par" de word).
Ainsi, si dans ton code tu écris:
#define VAL 124 int i = VAL;
Le préprocesseur va trouver la ligne avec le #, puis remplacer A par 124 dans la suite du source et le compilo va lire:
int b = 124;
sam.
Le 08/10/2010 00:54, bpascal123@googlemail.com a écrit :
Est-ce que c'est autant fonctionnel que le code "blindé" qui fait
appel au préprocesseur?
Quel appel? Il n'y a pas d'appel du préprocesseur dans le code. Le
préprocesseur est appelé par le compilo avant de faire le travail de
compilation.
Je ne connais pas encore bien le rôle du
préprocesseur sauf que c'est une histoire de registres plutôt que de
mémoire ram?
Non rien à voir. Pre-processing signifié pré-traitement. C'est à dire
avant la compilation à proprement parler. Le préprocesseur, c'est
grosso-merdo un truc qui modifie le code source avant que le compilateur
le transforme en code machine. En simplifiant à mort c'est comme si tu
faisais une suite de rechercher/remplacer dans le texte. (pense à la
fonction "remplacer-par" de word).
Ainsi, si dans ton code tu écris:
#define VAL 124
int i = VAL;
Le préprocesseur va trouver la ligne avec le #, puis remplacer A par 124
dans la suite du source et le compilo va lire:
Est-ce que c'est autant fonctionnel que le code "blindé" qui fait appel au préprocesseur?
Quel appel? Il n'y a pas d'appel du préprocesseur dans le code. Le préprocesseur est appelé par le compilo avant de faire le travail de compilation.
Je ne connais pas encore bien le rôle du
préprocesseur sauf que c'est une histoire de registres plutôt que de mémoire ram?
Non rien à voir. Pre-processing signifié pré-traitement. C'est à dire avant la compilation à proprement parler. Le préprocesseur, c'est grosso-merdo un truc qui modifie le code source avant que le compilateur le transforme en code machine. En simplifiant à mort c'est comme si tu faisais une suite de rechercher/remplacer dans le texte. (pense à la fonction "remplacer-par" de word).
Ainsi, si dans ton code tu écris:
#define VAL 124 int i = VAL;
Le préprocesseur va trouver la ligne avec le #, puis remplacer A par 124 dans la suite du source et le compilo va lire:
int b = 124;
sam.
bpascal123
En fait, je voulais savoir si le code qui fait appel à #if ... de Ed :
#if 0 /* cette fonction affiche le tout : alors le fichier est lisible */ void DisplayRec (FILE * FP_DESTI) { int c; printf ("nnAFFICHAGE : n"); while ((c = getc (FP_DESTI)) != EOF) putchar (c); }
#endif
...si ce code (avec les modifications nécessaires) est très différent du code du code du post précédent (repris en partie ci-dessous) ?
if ((MP_SOURCE = fopen(MP_Name, "r")) == NULL) fputs("Impossible d'ouvrir le fichier", stderr) ; else while (fscanf(MP_SOURCE, "%d%s%s", &Ticket, FNom, FPren) == 3) printf("%dn%sn%sn", Ticket, FNom, FPren) ;
Je suppose que pour quelque chose d'aussi simple, je me pose beaucoup trop de questions mais comme fscanf, fprintf ne sont pas des fonctions élémentaires et je n'ai pas envie de passer trop de temps sur les fonctions élémentaires de lecture de fichier avec opérations sur bits, permissions..., j'estime utile de bien comprendre les fonctions non-élémentaires.
En fait, je voulais savoir si le code qui fait appel à #if ... de Ed :
#if 0
/* cette fonction affiche le tout : alors le fichier est lisible */
void DisplayRec (FILE * FP_DESTI)
{
int c;
printf ("nnAFFICHAGE : n");
while ((c = getc (FP_DESTI)) != EOF)
putchar (c);
}
#endif
...si ce code (avec les modifications nécessaires) est très différent
du code du code du post précédent (repris en partie ci-dessous) ?
if ((MP_SOURCE = fopen(MP_Name, "r")) == NULL)
fputs("Impossible d'ouvrir le fichier", stderr) ;
else
while (fscanf(MP_SOURCE, "%d%s%s", &Ticket, FNom,
FPren) == 3)
printf("%dn%sn%sn", Ticket, FNom, FPren) ;
Je suppose que pour quelque chose d'aussi simple, je me pose beaucoup
trop de questions mais comme fscanf, fprintf ne sont pas des
fonctions élémentaires et je n'ai pas envie de passer trop de temps
sur les fonctions élémentaires de lecture de fichier avec opérations
sur bits, permissions..., j'estime utile de bien comprendre les
fonctions non-élémentaires.
En fait, je voulais savoir si le code qui fait appel à #if ... de Ed :
#if 0 /* cette fonction affiche le tout : alors le fichier est lisible */ void DisplayRec (FILE * FP_DESTI) { int c; printf ("nnAFFICHAGE : n"); while ((c = getc (FP_DESTI)) != EOF) putchar (c); }
#endif
...si ce code (avec les modifications nécessaires) est très différent du code du code du post précédent (repris en partie ci-dessous) ?
if ((MP_SOURCE = fopen(MP_Name, "r")) == NULL) fputs("Impossible d'ouvrir le fichier", stderr) ; else while (fscanf(MP_SOURCE, "%d%s%s", &Ticket, FNom, FPren) == 3) printf("%dn%sn%sn", Ticket, FNom, FPren) ;
Je suppose que pour quelque chose d'aussi simple, je me pose beaucoup trop de questions mais comme fscanf, fprintf ne sont pas des fonctions élémentaires et je n'ai pas envie de passer trop de temps sur les fonctions élémentaires de lecture de fichier avec opérations sur bits, permissions..., j'estime utile de bien comprendre les fonctions non-élémentaires.
Benoit Izac
Bonjour,
le 09/10/2010 à 22:52, bpascal a écrit dans le message :
En fait, je voulais savoir si le code qui fait appel à #if ... de Ed :
#if 0 /* cette fonction affiche le tout : alors le fichier est lisible */ void DisplayRec (FILE * FP_DESTI) { int c; printf ("nnAFFICHAGE : n"); while ((c = getc (FP_DESTI)) != EOF) putchar (c); }
#endif
Ce que tu n'as pas compris, c'est que ce code est en commentaire : lors du passage du pré-processeur, le test « #if 0 » va échouer donc toute cette partie va être retirée et le compilateur ne la verra pas.
Si tu veux l'utiliser, il faut remplacer le « #if 0 » par « #if 1 » ou supprimer « #if 0 » et « #endif »
-- Benoit Izac
Bonjour,
le 09/10/2010 à 22:52, bpascal a écrit dans le message
<c5445d10-f542-4393-9f6a-2702581ad775@u3g2000yqb.googlegroups.com> :
En fait, je voulais savoir si le code qui fait appel à #if ... de Ed :
#if 0
/* cette fonction affiche le tout : alors le fichier est lisible */
void DisplayRec (FILE * FP_DESTI)
{
int c;
printf ("nnAFFICHAGE : n");
while ((c = getc (FP_DESTI)) != EOF)
putchar (c);
}
#endif
Ce que tu n'as pas compris, c'est que ce code est en commentaire : lors
du passage du pré-processeur, le test « #if 0 » va échouer donc toute
cette partie va être retirée et le compilateur ne la verra pas.
Si tu veux l'utiliser, il faut remplacer le « #if 0 » par « #if 1 » ou
supprimer « #if 0 » et « #endif »
le 09/10/2010 à 22:52, bpascal a écrit dans le message :
En fait, je voulais savoir si le code qui fait appel à #if ... de Ed :
#if 0 /* cette fonction affiche le tout : alors le fichier est lisible */ void DisplayRec (FILE * FP_DESTI) { int c; printf ("nnAFFICHAGE : n"); while ((c = getc (FP_DESTI)) != EOF) putchar (c); }
#endif
Ce que tu n'as pas compris, c'est que ce code est en commentaire : lors du passage du pré-processeur, le test « #if 0 » va échouer donc toute cette partie va être retirée et le compilateur ne la verra pas.
Si tu veux l'utiliser, il faut remplacer le « #if 0 » par « #if 1 » ou supprimer « #if 0 » et « #endif »
-- Benoit Izac
Samuel DEVULDER
Le 09/10/2010 22:52, a écrit :
En fait, je voulais savoir si le code qui fait appel à #if ... de Ed :
#if 0 /* cette fonction affiche le tout : alors le fichier est lisible */ void DisplayRec (FILE * FP_DESTI) { int c; printf ("nnAFFICHAGE : n"); while ((c = getc (FP_DESTI)) != EOF) putchar (c); }
#endif
...si ce code (avec les modifications nécessaires) est très différent du code du code du post précédent (repris en partie ci-dessous) ?
Ben oui.. l'un utilise une lecture caractère par caractère et l'autre lit des entrées formatées. Ils ne font pas la même chose.
Je suppose que pour quelque chose d'aussi simple, je me pose beaucoup trop de questions mais comme fscanf, fprintf ne sont pas des fonctions élémentaires et je n'ai pas envie de passer trop de temps sur les fonctions élémentaires de lecture de fichier avec opérations sur bits, permissions..., j'estime utile de bien comprendre les fonctions non-élémentaires.
Je ne sais pas, mais perso je n'utilise pas les entrées formatées avec fscanf().. Cette fonction ne s'utilise pour ainsi dire qu'en TP à l'école ou pour les expériences de coin de table. Dans la vraie vie, les gens font des entrées/sorties autrement dans lesquelles ils contrôlent plus les choses. .
sam.
Le 09/10/2010 22:52, bpascal123@googlemail.com a écrit :
En fait, je voulais savoir si le code qui fait appel à #if ... de Ed :
#if 0
/* cette fonction affiche le tout : alors le fichier est lisible */
void DisplayRec (FILE * FP_DESTI)
{
int c;
printf ("nnAFFICHAGE : n");
while ((c = getc (FP_DESTI)) != EOF)
putchar (c);
}
#endif
...si ce code (avec les modifications nécessaires) est très différent
du code du code du post précédent (repris en partie ci-dessous) ?
Ben oui.. l'un utilise une lecture caractère par caractère et l'autre
lit des entrées formatées. Ils ne font pas la même chose.
Je suppose que pour quelque chose d'aussi simple, je me pose beaucoup
trop de questions mais comme fscanf, fprintf ne sont pas des
fonctions élémentaires et je n'ai pas envie de passer trop de temps
sur les fonctions élémentaires de lecture de fichier avec opérations
sur bits, permissions..., j'estime utile de bien comprendre les
fonctions non-élémentaires.
Je ne sais pas, mais perso je n'utilise pas les entrées formatées avec
fscanf().. Cette fonction ne s'utilise pour ainsi dire qu'en TP à
l'école ou pour les expériences de coin de table. Dans la vraie vie, les
gens font des entrées/sorties autrement dans lesquelles ils contrôlent
plus les choses. .
En fait, je voulais savoir si le code qui fait appel à #if ... de Ed :
#if 0 /* cette fonction affiche le tout : alors le fichier est lisible */ void DisplayRec (FILE * FP_DESTI) { int c; printf ("nnAFFICHAGE : n"); while ((c = getc (FP_DESTI)) != EOF) putchar (c); }
#endif
...si ce code (avec les modifications nécessaires) est très différent du code du code du post précédent (repris en partie ci-dessous) ?
Ben oui.. l'un utilise une lecture caractère par caractère et l'autre lit des entrées formatées. Ils ne font pas la même chose.
Je suppose que pour quelque chose d'aussi simple, je me pose beaucoup trop de questions mais comme fscanf, fprintf ne sont pas des fonctions élémentaires et je n'ai pas envie de passer trop de temps sur les fonctions élémentaires de lecture de fichier avec opérations sur bits, permissions..., j'estime utile de bien comprendre les fonctions non-élémentaires.
Je ne sais pas, mais perso je n'utilise pas les entrées formatées avec fscanf().. Cette fonction ne s'utilise pour ainsi dire qu'en TP à l'école ou pour les expériences de coin de table. Dans la vraie vie, les gens font des entrées/sorties autrement dans lesquelles ils contrôlent plus les choses. .