sebastienmz
Messages postés139Date d'inscriptionmardi 16 mai 2006StatutMembreDernière intervention23 juin 2008
-
30 nov. 2006 à 14:13
cs_Matt67
Messages postés549Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention 6 mars 2010
-
3 déc. 2006 à 20:40
bonjour j'ai fait un programme d'administration a distance et j'ai fait une fonction pour lire un fichier et je doit envoyer tout les 100 octet lu mais cela marche pas ! POUVEZ VOUS M'AIDER ?!? voila ma source :
void consult (char nf[81]) { //menu de choix de la consultation
int p = 0;
int nb = 0;
FILE * entree;
char mot[100];
entree = fopen (nf, "r");
while (1) {
fscanf (entree , "%c", &mot[p]);
if (feof (entree)){ //si on arrive la la fin SPOUTCH
printf("%s", mot);
strcpy(socketbuff.snd,mot);
envoi(&socketbuff);
strcpy(socketbuff.snd,"\r\nEND\r\n");
envoi(&socketbuff);
break;
} p++;
if (p>=98){
p=0;
printf("%s", mot);
strcpy(socketbuff.snd,mot);
envoi(&socketbuff);
memset(mot,'\x00',99);
} }
fclose(entree);
}
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 30 nov. 2006 à 15:10
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 30 nov. 2006 à 15:15
Salut:
Une petite rectification:
Si tu veux lire au plus 100 caractères tu dois donc lire 101 caractères (un de plus pour '\0')
#define SIZE 101
FILE * stream = fopen ("fichier", "r");
if (stream != NULL) {
while (fgets (buffer, SIZE, stream) != NULL) {
// tu travailles maintenant avec ton buffer
}
fclose (stream);
}
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 30 nov. 2006 à 15:16
Salut:
Une petite rectification:
Si tu veux lire au plus 100 caractères tu dois donc lire 101 caractères (un de plus pour '\0')
#define SIZE 101
char buffer [SIZE];
FILE * stream = fopen ("fichier", "r");
if (stream != NULL) {
while (fgets (buffer, SIZE, stream) != NULL) {
// tu travailles maintenant avec ton buffer
}
fclose (stream);
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 30 nov. 2006 à 15:23
Salut:
fgets retourne NULL quand elle détecte la fin du fichier EOF.
>> Quel '\0'. C'est un fichier. Il n'est pas garantie qu'il soit dedans. En plus, si je me souvien bien, fgets ne récupère qu'une ligne. Si tu veux récupérer 100 char mais que la ligne dans le fichier n'en fais que 10, il n'en récupéra que 10.
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 2 déc. 2006 à 00:55
Salut:
J'ai lu dans MSDN que la fonction fgets ajoute un '\0' au buffer d'entrée quand :
1- elle rencontre un '\n'.
2- lorsque le nombre maximal de caractères est atteind.
The fgets function reads a string from the input stream argument and stores it in string. fgets
reads characters from the current stream position to and including the
first newline character, to the end of the stream, or until the number
of characters read is equal to n – 1, whichever comes first. The result stored in string is appended with a null character. The newline character, if read, is included in the string.
yoyo269
Messages postés1403Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 janvier 20092 2 déc. 2006 à 10:18
Salut à tous,
je vois que ça a beaucoup parlé en mon absence !
Et donc apparemment c'est moi qui avait raison avec fread !!! Wouhouh ! ça se fête pour une fois !
Qui veut du champagne ???
YOYO, @+
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"