Creer une fonction pour ouverture fichier

Résolu
cs_nach73 Messages postés 34 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 18 mai 2005 - 27 avril 2005 à 23:01
cs_nach73 Messages postés 34 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 18 mai 2005 - 28 avril 2005 à 09:18
bonjour,
Je debut en C, jaimerai creer une fonction (pas dans le main) qui me permet d'ouvrir un fichier dont l'utilisateur aurait au pralable rentrer le chemin.
ex:
<Ecran>Entrez votre fichier :
c:\test.txt
merci.

6 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
28 avril 2005 à 09:05
char *fichier;
printf("\nEntrez fichier a copier : ");
gets(fichier);

Et fichier il pointe sur quoi ??? Réponse : n'importe ou en mémoire et donc plantage
il faut soit initialiser le pointeur avec une chaîne existante soit allouer dynamisuement avec malloc soit déclarer une chaîne statiquement (taille connue à la compilation)

char fichier[260];
printf("\nEntrez fichier a copier : ");
gets(fichier);

Et la ça marchera beaucoup mieux. On peut encore faire mieux en utilisant fgets(stdin, fichier 260) pour être sur de pas entrer trop de caractètes.
3
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
28 avril 2005 à 00:06
tapé en live, pas vérifié...



void lirefichier(char* nom){

FILE*fichier=fopen(nom,"r");

fread(fichier, "%i %f",& MaValeur1,&MonFloat);

...

fclose(nom);

}

void main(void){lirefichier();}

_______________________


Omnia vincit labor improbus
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
28 avril 2005 à 00:28
Arnaud, et tu le lis ou le nom du fichier?

#include <stdio.h>

void lirefichier(char *nom)
{
FILE *f;
f = fopen(nom, "r");
//traitement du fichier
fclose(nom);
}

void main()
{
char [256];
printf("Nom du fichier: ");
scanf("%s", file);
lirefichier(file);
}
Bob...

"La chance accorde ses faveur aux esprits avertis..."
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
28 avril 2005 à 01:00
oups oui dsl il est tard :)

d'ailleurs je vois que je ne suis pas le seul leve-tard sur ce site ^^

merci de la correction

je pourrais dire, moi, que tu n'as pas mis void dans main() mdr (mais qu'est-ce qu'on s'en f*** apres tout?)

++

ad

_______________________


Omnia vincit labor improbus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nach73 Messages postés 34 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 18 mai 2005
28 avril 2005 à 08:40
Oui,C'est ce que j'avais fais, mais quand je rentre le nom du fichier j'ai la console qui se plante et je ne comprend pas.
voila mon code si quelqu'un vois l'erreur qu'il me le dise

#include<stdio.h>
#include<stdlib.h>
#include<string.h>



#define TAILLE 1024


void CopieFichier(char *fichier)
{
FILE *fs;
FILE *f;
char *fichierSource;
char *memoir = (char *)malloc(TAILLE);
int longueur;
f=fopen(fichier,"r");
fs = fopen("c:\\CopieFichierSource.txt","w");
while((longueur = fread(memoir,1,TAILLE,f)) != 0)
fwrite(memoir,1,longueur,fs);
fclose(f);
fclose(fs);
free(memoir);
return ;
}


main()
{
FILE *f;
char *fichier;
printf("\nEntrez fichier a copier : ");
gets(fichier);
CopieFichier(fichier);
fflush(stdin);
fgetc(stdin);
return;
}
0
cs_nach73 Messages postés 34 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 18 mai 2005
28 avril 2005 à 09:18
impecable, merci beaucoup.
0
Rejoignez-nous