Probleme langage c, création de fichier

Résolu/Fermé
reggaetonero Messages postés 22 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 15 octobre 2009 - 26 déc. 2008 à 15:44
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 - 27 déc. 2008 à 17:59
Bonjour,
Je laisse un post sur ce site car je commence a apprendre le langage C mais je dois faire un programme permettant de créer un fichier dans un programme écrit en C. mais j'ai quelques soucis :s
Si quelqu'un avait la solution et qu'il pouvait m'aider ^^
Voici ce que j'ai écrit :s :
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
unsigned long fichier;
sprintf(test.txt)
   FILE* fichier = NULL;
 
    fichier = fopen("test.txt", "w");
 
    if (fichier != NULL)
    {
        fputs("salut \n ça va ?", fichier);
        fclose(fichier);
    }
 
    return 0;
  
  
  FILE* fichier = NULL;

    fichier = fopen("test.txt", "r+");

    if (fichier != NULL)
    {
    
    }
    else
    {
        
        printf("Impossible d'ouvrir le fichier test.txt");
    }
  system("PAUSE");      
  return 0;
}



Voilà, merci de votre aide.
A voir également:

12 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
26 déc. 2008 à 15:50
Salut,
Enlève le unsigned long fichier, le sprintf, le premier return 0; et n'oublie pas de fermer le fichier tout à la fin. De plus, enlève la deuxième déclaration de fichier.
Ca devrait mieux marcher ;)
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
26 déc. 2008 à 15:51
salut !

quand tu mets des nombres a variables dans un fichier, il faut utiliser le fprintf au lieu de fputs car le fputs ne prends pas en compte les variables, ensuite il n'y a pas besoin de mettre le unsigned char fichier, il se crée tout seul avec le pointeur FILE sur fichier
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
26 déc. 2008 à 15:52
et tu ne dois pas metrtre deux "fichier" identiques, l'autre appelles le fichier1 par ex.

et ne mets pas deux return 0 !
0
reggaetonero Messages postés 22 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 15 octobre 2009 1
26 déc. 2008 à 15:59
Apres la modification, je ne peux toujours pas compilé car on m'indique une erreur dans le main. Et ces erreures :

13 [Warning] passing arg 1 of `fprintf' from incompatible pointer type 

13 [Warning] passing arg 2 of `fprintf' from incompatible pointer type 



Et voiçi mon nouveau code :
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

   FILE* fichier = NULL;
 
    fichier = fopen("test.txt", "w");
 
    if (fichier != NULL)
    {
        fprintf("salut \n ça va ?", fichier);
        fclose(fichier);
    }
 

  
  
  FILE* fichier2 = NULL;

    fichier2 = fopen("test.txt", "r+");

    if (fichier2 != NULL)
    {
    
    }
    else
    {
        
        printf("Impossible d'ouvrir le fichier test.txt");
    }
  system("PAUSE");      
  return 0;
}


PS: Je suis pas très doué, je prefere le PHP :p
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
26 déc. 2008 à 16:03
Salut,
Pas besoin de fprintf dans ton cas. fputs suffira amplement. fprintf c'est si tu veux mettre des variables etc.
Et pas besoin de recréer une variable fichier2 comme il t'a été dit. Autant réutiliser l'autre.
Teste plutôt :
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

    FILE* fichier = NULL;

    fichier = fopen("test.txt", "w");

    if (fichier != NULL)
    {
        fputs("salut \n ça va ?", fichier);
        fclose(fichier);
    }

    fichier = fopen("test.txt", "r");

    if (fichier != NULL)
    {
        //ici tu peux lire ton fichier
        fclose(fichier);
    }
    else
    {

        printf("Impossible d'ouvrir le fichier test.txt");
    }
    system("PAUSE");
    return 0;
}

0

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

Posez votre question
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
26 déc. 2008 à 16:03
ah oui, le fprintf, tu doit mettre

fprintf ("fichier, "salut %i", calcul); par ex
0
reggaetonero Messages postés 22 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 15 octobre 2009 1
26 déc. 2008 à 16:06
Par contre je dois déclarer quoi par calcul, je comprend pas trop là
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
26 déc. 2008 à 16:07
c'etait uh exemple, si jamais tu veux mettre une variable !! dsl
0
reggaetonero Messages postés 22 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 15 octobre 2009 1
26 déc. 2008 à 16:08
Merci fiddy, ta solution fonctionne tres bien par contre lorsque je l'éxécute, il ne ouvre pas mon fichier. Comment faire ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
26 déc. 2008 à 16:13
Si, ça ouvre bien ton fichier en mémoire. Après à toi d'aller chercher les informations dedans avec fgets par exemple.
Mets par exemple là ou je t'ai mis (ici tu peux lire ton fichier) :
char buffer[100];
fgets(buffer,sizeof buffer,fichier);
puts(buffer);
0
reggaetonero Messages postés 22 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 15 octobre 2009 1
26 déc. 2008 à 16:16
En faite ce que je voudrais c'est que le fichier s'ouvre avec un éditeur comme le bloc note ou notepad++ et non pas dans la console.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
26 déc. 2008 à 16:20
Dans ce cas, c'est plutôt du batch ou du shell qu'il faut faire.
En C, tu as des solutions mais qui ne sauront pas portable. Sur windows, tu peux par exemple faire :
system("notepad fichier.txt"); ou tu peux aussi utiliser la famille des exec (execve, etc).
Cdlt
0
reggaetonero Messages postés 22 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 15 octobre 2009 1
26 déc. 2008 à 16:25
Et lancer un bat depuis le programme C, c'est possible ça. Ou il faut réalisez un programme distinct en .bat ???
0
reggaetonero Messages postés 22 Date d'inscription vendredi 26 décembre 2008 Statut Membre Dernière intervention 15 octobre 2009 1
26 déc. 2008 à 16:37
J'ai trouvé la solution merci beaucoup pour votre aide.
0
HACKER 712 Messages postés 1282 Date d'inscription lundi 15 décembre 2008 Statut Contributeur Dernière intervention 10 décembre 2009 255
27 déc. 2008 à 17:59
ok salut !
0