Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
27 août 2004 à 21:57
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
30 août 2004 à 18:39
eh oui encore moi !
(d'ailleurs si vous aviez un bon tut pour savoir enfin comment on fait, ca m'arrangerait...)
alors voila:
FILE * fichier =fopen("input.txt","r");
char* flag;
bool end = false;
while (end==false) {
fscanf(fichier,"%c",&flag);
if (strcmp(flag,"E")==0){bool end=true;}
}
ne mache pas. je sais (je crois) que c'est au niveau du strcmp.
Pourquoi?
(!strcmp() ne marche pas non pus )
merci d'avance.
PS : pour lire un char*, c'est bien %c ?
PS 2 : non, je ne veux pas passer en binaire!
MetalDwarf
Messages postés241Date d'inscriptionmardi 29 octobre 2002StatutMembreDernière intervention23 janvier 2006 28 août 2004 à 12:05
Attention djl il y a quand meme un probleme dans ta source!!
Si la chaine a lire fait plus de 1024 octets tu as un beau buffer overflow --> bug!!
il faut rajouter un gabarit a fscanf().
Si mes souvenirs sint bons, ca dnne un truc du style:
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 29 août 2004 à 11:05
c'est gentil...
en fait ca fait un an que je programme mais je n'ai pas trouvé d'explication satisfaisante sur l'écriture/lecture,et mon bouquin n'en dit mot, c'est pour ca que 90% de mes messages ont la dessus.
la fonction ne doit lire qu'un seul caractere, donc char[1024] c'est un peu pcb...
pourquoi fgets c'est mieux?
en tout cas je vais me taper toute la doc, merci pour l'url
MetalDwarf
Messages postés241Date d'inscriptionmardi 29 octobre 2002StatutMembreDernière intervention23 janvier 2006 29 août 2004 à 11:09
T as du te faire niquer avec un bouquin de merde. J ai fait la meme erreur avec mon 1er livre... Si tu veux un bon livre complet et clair sur le C ANSI il y a celui de Delannoy qui s appelle "C ANSI" qui est vendu par Eyrolles a 19€ je crois. Il est vraiment pas mal.
Sinon si tu veux lire un seul caractere le plus simple c est fgetc().
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 29 août 2004 à 21:03
merci,j'ai déja aspiré toute la page de c++.com sur stdio....
sinon mon bouquin est tres bien (pour les nuls), mais ne parle pas de la lecture/ecrirure, c'est tout...
en tt cas merci ca marche maintenant
fofodavid
Messages postés47Date d'inscriptionmardi 18 mars 2003StatutMembreDernière intervention29 août 2004 29 août 2004 à 21:57
FILE * pFile;//déclaration du flux
long lSize;
char * buffer;
char rfich[32];
printf("\n***Lecture de fichier***\n");
printf("\nEntrez le nom du fichier a lire : \n\n");
scanf("%s",&rfich);
pFile = fopen ( rfich , "rb" );//ouverture du fichier en mode lecture
if (pFile==NULL) exit (1);//si le fichier n'existe pas, il quitte le programme
fseek (pFile , 0 , SEEK_END);//renvoie la taille du fichier
lSize = ftell (pFile);
rewind (pFile);//place le pointeur du fichier au debut
buffer = (char*) malloc (lSize);//allocation de la memoire pour stocker le fic
if (buffer == NULL) exit (2);//si le buffer ne contient rien alors ca quitte
fread (buffer,1,lSize,pFile);//copie le fichier dansle buffer
printf(buffer);//affiche a l'ecran le contenu du buffer et donc du fichier
fclose (pFile);//fermeture du flux
free (buffer);//vide le buffer
getch();
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 29 août 2004 à 22:24
vi je sé je l'ai lu.
en fait je suis un peu perplexe; j'ai l'impression que bcp de fonction st équivalentes les unes aux autres, je sé pas quelles st leurs différences..
je vais encore potasser tt ca un grand coupo, ca ira mieux apres... :)
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 30 août 2004 à 14:00
fofodavid > ton exemple n'est pas ce qu'il y a de mieux, entre le scanf( "%s"...), le cast du malloc (on est en C), l'oubli du 0 final dans buffer (si tu le traite comme une chaine de caractere), le printf(buffer), le getch() (a la limite, pour ce genre de code autant etre standard jusqu'au bout, la lecture du clavier ca casse tout) et surtout le fflush( stdin ) (dangeureux, pas portable, ne sert à rien...)