Ouvrie et lire le contenu d'un fichier(débutant inside)
psicoblues
Messages postés7Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention16 juin 2007
-
14 juin 2007 à 08:47
psicoblues
Messages postés7Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention16 juin 2007
-
16 juin 2007 à 22:10
Bonjour, voilà je me lance dans le monde du dévelopement avec pour langage le C.
J'ai installé un turbo C sur un MS-DOS 6.2, sur un vieux Pentium.
Pour mon premier programme, j'ai voulu commencer simple: ouvrir et lire un fichier text.
Voilà mon bout de programme:
Mais rien ne ce passe, et lorsque je fais alt+F9, dans l'éditeur de TurbC, il me dit que MonFichier n'est pas une variable utilisé dans la fonction main.
Ou est mon erreur?
Merci de votre aide!!!
A voir également:
Ouvrie et lire le contenu d'un fichier(débutant inside)
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 14 juin 2007 à 09:04
salut, j'aurais peut-être commencé par plus simple si c'est vraiment ton tout premier programme.
sinon tu fais un projet en mode console, je suppose ?
#include <stdio.h>
main (void)
{
FILE *MonFichier ; // pour le type FILE (qui est en fait un void) il faut inclure "stdlib.h" je crois
char Filename[]: "c:\>log.txt" ; // ici il me semble que c'est plutôt : char Filename[] = "c:\log.txt" ou "c://log.txt"
MonFichier = fopen(Filename, "r") ; // puisqu'il s'agit d'un fichier txt, tu peux mettre "rt" avec 't' pour texte
}
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 14 juin 2007 à 10:10
le listing des erreurs exact c'est quoi ?
dans ton premier post, tu as mis ton code intégral ?
tu veux pas passer sur windows xp ? lol, parce que DOS c'est bien mignon, mais tu vas pas aller loin avec ça.
t'as essayé de voir s'il pouvait pas y avoir des problèmes de compatibilité ?
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 14 juin 2007 à 10:14
au fait je suis un boulet, j'ai inversé / et \.
donc je la refais : soit c:/log.txt soit c:\\log.txt car \ est le symbole qui prévient qu'il va y avoir un autre caractère pour former un caractère spécial : \0 \t \n \r
Loki
Vous n’avez pas trouvé la réponse que vous recherchez ?
psicoblues
Messages postés7Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention16 juin 2007 14 juin 2007 à 10:24
listing des ereurs:
Warning: "MonFichier" is assigned a value which is never used in function main.
oui c'est mon code intégrale, mais je pense que je vais le modifier par la suite avec une fonction while pour avoir un rafaichissement de l'affichage.
Mon serveur est sous winXP(c'est le seul, je suis linuxien avant tout, enfin un linuxien unitié non expert lol ), je pense que j'orais pû faire un script tout bête mais je veux me mettre au C par curiosité.
Un programme en C sous MSDOS devrait passer sur toutes les platformes windows, non?
psicoblues
Messages postés7Date d'inscriptionlundi 17 octobre 2005StatutMembreDernière intervention16 juin 2007 14 juin 2007 à 11:07
en faite ma principale erreur est une erreur de compréhension du langage C, car je croyais que fopen m'ouvrais le fichier ET me l'affichais à l'écran et non, certe il m'ouvre le fichier mais de traite rien. Donc il faut que j'utilise une fonction qui m'affiche le contenu de mon fichier.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 14 juin 2007 à 14:13
TurboC avec MS_DOS ? Passe vite sous quelque chose de plus récent, ces "choses" date de l'âge de pierre.
Sinon, je ne recommande pas du tout la méthode de Loki1 pour lire un fichier. Je recommande de récupérer la taille d'abord, allouer la mémoire nécessaire, récupérer le contenue puis afficher.
#include <stdlib.h>
#include <stdio.h>
int main (void)
{
char *buffer;
FILE *file;
int size;
Loki6
Messages postés286Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention27 décembre 20092 14 juin 2007 à 14:27
SAKingdom > il y a beaucoup de pertes en lisant comme je l'ai fait avec ma boucle while ?
je sais que je suis de mauvaise foi, mais en admettant que le fichier de psicoblues soit énorme, et vu que son pc marche à pédales, il vaut mieux faire par morceaux que tout d'un coup non ?
et pis tant que j'y suis, il me semble que c'est : fread(buffer, 1, size, file) et pas fread(buffer, size, 1, file)
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 14 juin 2007 à 14:41
Lire par bloque oui mais pas avec fgets. fgets s'arrêt à chaque \n ce qui peut faire perdre beaucoup de temps.
Tu alloues un buffer de taille raisonnable (32Ko) puis tu le remplis avec fread mais 256 est une taille ridicule.
Pour le fread, oui j'ai inversé le 2 et 3ème paramètre.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 14 juin 2007 à 14:51
Ah oups. D'habitude avec des tailles si petites, les gens on tendence à utiliser fgets.
32Ko, c'est minim pour la mémoire vive même avec de vieux PC.
Autre chose, ajoute un 0 de fin de chaine à buffer car ton prinf passera tout droit.