× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Autres langages
 prog C faire choisir le nom du fichier à créerSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
gugus54
  Posté le 18/12/2011 @ 19:02 
Aller en bas de la page 
Petit astucien

bonjour, je me demandais si il était possible de demander à l'uttilisateur du programme le nom du fichier à enregistrer:

int main ()

{

char nomFichier [10] = {0};

int i = 0;

for(i=0;i<9;i++)

{

scanf("%c", nomFichier[i]);

}

FILE* fichier = NULL;

fichier = fopen("XXX.txt", "W+");//je voudrais remplacer XXX par "nomFichier"

if (fichier == NULL)

{

printf("erreur");

}

{

.....//suite du programme

}

return 0;

}

voila donc serait-t-il possible de remplacer XXX par la chaine stockée dans nomFichier?

Publicité
breizhbugs
 Posté le 18/12/2011 à 22:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Faut bannir gets() trop susceptible de dépassement de buffer et lui préferer fgets()...

gugus54
 Posté le 19/12/2011 à 11:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci

gugus54
 Posté le 27/12/2011 à 18:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

en fait, il y a un probleme avec ce code:

int main()
{
char nouveau[10];
FILE*fichier = NULL;

printf("Entrez le nom du fichier: \n ");
puts(nouveau);

strcat("nouveau",".txt");


fichier = fopen(nouveau, "w");

return 0;
}

voila. le programme se déroule jusqu'à me demander de rentrer le nom du fichier et a ce moment, il y a une feunetre qui s'affiche indiquant que le programme à cessé de fonctionné, je n'ai meme pas pu rentrer le nom du fichier {#}



Modifié par gugus54 le 27/12/2011 18:26
gugus54
 Posté le 27/12/2011 à 18:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

eh... ou je dois mettre gets() car j'ai essayé mais il y avait le meme probleme...

merci

gugus54
 Posté le 27/12/2011 à 19:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

voila mon code:

int main()
{
char nomFichier[10];
FILE*fichier = NULL;

printf("Entrez le nom du fichier:");gets(nomFichier);

strcat("nomFichier",".txt");

puts(nomFichier);


fichier = fopen(nomFichier, "w");

return 0;
}

voila je ne vois pas ce qui ne va pas j'ai bien fais ce que vous m'avez dit ...

gugus54
 Posté le 27/12/2011 à 19:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

eh la le programme se termine directe il me laisse meme pas rentrer le nom et il finit

gugus54
 Posté le 28/12/2011 à 15:20 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci Anonyme ca marche

gugus54
 Posté le 28/12/2011 à 15:28 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

mais ces lignes doivent se trouver dans la fonction main ou dans le fichier main?

Publicité
gugus54
 Posté le 28/12/2011 à 16:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

oui mais j'ai mis les lignes:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main ()

{

char nomFichier [10];
FILE* fichier = NULL;

printf("Entrez le nom du fichier : ");gets(nomFichier);

strcat(nomFichier,".txt");
puts(nomFichier);

fichier = fopen(nomFichier, "W+")
;

return 0;

}



dans un nouveau programme et cela a fonctionné.

mais je l'ai ensuite mis dans une autre fonction que int main ()

qui est:

int nomFichier () {...}

et la, le programme ne me pose plus la question et il finit.

pourtant, dans la fonction main, j'ai bien mis la ligne:

nomFichier();




gugus54
 Posté le 28/12/2011 à 16:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

voila mon code:

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

int CreerFichier();
int OuvrirFichier();


int main()
{
printf("que voulez vous faire? \n1.créer un fichier\n2.ouvrir un fichier\n");
int choix = 0;
scanf("%d", &choix);
if(choix == 1)
{
CreerFichier();
}
else if (choix == 2)
{
OuvrirFichier();
}
else
{
printf("erreur");
}

return 0;
}

int CreerFichier()
{
char NomFichier[10];

FILE* fichier = NULL;

printf("rentrez le nom du fichier:\n");gets(NomFichier);

strcat(NomFichier, ".txt");

puts(NomFichier);

fichier = fopen(NomFichier, "w");
}

int OuvrirFichier()
{
/* ...........
..........
*/
}

gugus54
 Posté le 28/12/2011 à 16:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci ca marche

mais si ca ne te dérange pas (car tu m'as bien aidé) pourrait tu m'expliquer brievement le role de %*c

car je n'ai pas bien compris

merci

gugus54
 Posté le 28/12/2011 à 17:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

ok merci donc si j'ai bien compris, lorsque j'appui sur [entrée] l'ordinateur enregistre la réponse + la variable dans la memoire vive et lorsque je redemande une entrée, il se sert de la réponse et repond tout seul?

merci

gugus54
 Posté le 28/12/2011 à 17:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

ok merci

bonne fetes

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
199 €Kit 5.1 Logitech Speaker System Z906 à 199 €
Valable jusqu'au 28 Novembre

Amazon fait une promotion sur le kit 5.1 Logitech Speaker System Z906 qui passe à 199 € livré gratuitement alors qu'on le trouve ailleurs à partir de 250 €. Avec une puissance de diffusion de 500 watts (RMS), ce système 5.1 certifié THX produit un son de qualité cinéma. Profitez d'un contrôle total sur votre système multimédia grâce à ses entrées numériques et analogiques, un pupitre de commande facile à lire et empilable et une télécommande sans fil.


> Voir l'offre
17,90 €Prise connectéeWi-Fi avec mesure de consommation TP-Link HS110 à 17,90 €
Valable jusqu'au 28 Novembre

Amazon fait une promotion sur la prise connectée Wi-Fi avec mesure de consommation TP-Link HS110 qui passe à 17,90 € alors qu'on la trouve habituellement autour de 40 €. Cette prise peut être contrôlée à distance en utilisant l'app gratuite KASA sur votre smartphone (iOS ou Android). Vous pouvez créer des planifications horaires pour allumer ou éteindre automatiquement et quand vous le souhaitez, l'appareil qui y est branché. Enfin, vous pourrez analyser en temps réel la consommation électrique d'un équipement et accèder à l'historique de la consommation. Elle est compatible Google Home, Amazon Alexa et IFTTT.


> Voir l'offre
79,99 €Casque sans fil Sony WH-CH700N Bluetooth avec réduction de bruit active à 79,99 €
Valable jusqu'au 30 Novembre

Cdiscount fait une belle vente flash sur le casque sans fil Sony WH-CH700N Bluetooth qui passe à 79,99 € livré gratuitement alors qu'on le trouve ailleurs à plus de 120 €. Ce casque sans fil rechargeable (via micro USB) offre jusqu'à 35h d'autonomie. L'AINC (Artificial Intelligence Noise Cancelling) s'adapte à votre environnement, ce qui vous permet d'éliminer les bruits indésirables lors de vos voyages ou si vous êtes avec d'autres personnes dans une même pièce. Une très bonne affaire.


> Voir l'offre

Sujets relatifs
Créer un fichier init.lua
créer fichier .gdb avec delphi
Créer un fichier .com
creer un fichier .pif
Création de fichier .msi : Comment faire ?
Erreur d'Ouverture de Fichier Illustrator = opérateur Fautif: "Bg"
créer pop-up, bandeau ou ? dynamique
Arduino quel éditeur choisir ?
Création d'un fichier End Of File
Extraire une image d'un fichier SWF
Plus de sujets relatifs à prog C faire choisir le nom du fichier à créer
 > Tous les forums > Forum Autres langages