F print allocation de memoir [Résolu]

Signaler
Messages postés
10
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 juillet 2005
-
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010
-
/* Je souhaiterai écrire le contenu texte d'une variable char dans un fichier, comment faire ?
J'ai pri ce code, mais il me comble les espaces non ecrits du char par des caracteres aléatoires,
comment le corriger, comment faire une allocation dynamique pour avoir une taille égale a la chaine saisie ? */

***********************************************

#include <stdio.h> /* header file */
#include <stdlib.h>
int main()
{
char nom[255];
scanf("%s",nom);

int i=100; //a quoi cela sert-il ? :)
FILE *fp; /* file pointer */
if ((fp = fopen("log.txt", "w+"))==NULL) /* open file for output */
{
printf("Cannot open file \n");
exit(1);
}
if (fwrite(&i, sizeof(nom), 1, fp) !=1){
printf("Write error occurred");
exit(1);
}
fclose(fp);
/* open file for input */
fwrite(&nom, sizeof(nom), 1, fp);
fclose(fp);
system("pause");
}

*************************************************

Merci d'avance

6 réponses

Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonjour,

Essaie un truc comme ca (pas de traitement d'erreurs) :

#include <stdio.h>

int main(void)
{
char szLine[201];
FILE *fp;
puts("Entrez une phrase (200 caracteres max) : ");
gets(szLine);
fp = fopen("Fichier.txt", "w");
fputs(szLine, fp);
fclose(fp);
puts("Appuyez sur Entree pour continuer...");
gets(szLine);
return 0;
}

Matt...
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
si t'es en c++, tu simplifie:

#include <fstream>

string Str;

Str = "ce que je veux ecrire dans le fichier\n";

ofstream os ("monfic.txt");

os << Str;

si t'es en C, t'appuye surtt pas sur ce code il est absolument horrible....
les exit sont a proscrire (d'autant plus ds le main) ca prouve que celui qui a ecrit ca etait pas mal a l'ouest....
le system ("pause"); est a éviter aussi sachant qu'il existe des fonctions standard qui evitent de passer en mode kernel pr une simple pause....ensuite je ne connais pas les profils des fonctions fread et fwrite mais son code m'a vraiment l'air pas terrible....si t'es en c++ regarde ds la stl sur ce que je viens de te dire, si t'en en c je te conseille de chercher une autre source et de jeter celle la et partir en courant tres tres vite
Messages postés
10
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 juillet 2005

lol en faite la source elle est tire de l'aide de dev c++ mais bon vu que ça marchai pas je l'ai trituré de partou :s
je test ton ofstraem et je te dit ça
par contre c'est une variable le "nom" enfin bon je regarde

ps : toutes autre pist'e serai les bien venu
Messages postés
10
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 juillet 2005

merci leprov et Matt67 pour les reponce rapide
Messages postés
232
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
8 janvier 2005

hé, on utilise JAMAIS gets, mais fgets sur stdin !
n'est-ce pas ???
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,

C'est vrai, car pas de controle de debordement mais j'ai fait au plus simple. gets est a proscrire...

Désolé,

Matt...