Fichier c

Résolu
rachou1 Messages postés 32 Statut Membre -  
rachou1 Messages postés 32 Statut Membre -
Bonjour,

Je voudrais creer un programme en c qui recupere des caractere et qui les ecrit dans un fichier appeler fic.txt. J'ai ecrit ce code mais voila a chaque fois que je compile, il y a une erreur "warning : assigment from incompatible pointer type"...
Quelqu'un pourrez m'aider svp ? merci d avance !

int main()
{
int ret;
char c;
FILE * fi = NULL;

printf("Saisir caractere \n");
while((ret = getchar()) ! = (-1)) {
c = (char) ret;
fp = ("fic.txt", "w+");
if(fp == NULL) {
printf("\n Fichier inexistant\n");
return;
}
}
}

7 réponses

  1. le_framboisier Messages postés 7 Statut Membre 2
     
    Bonjour,

    Je viens de relire ton code à tête reposée.

    Il paraît plus simple selon moi de faire :

    
    #include <stdio.h>
    
    int main()
    {
    int c; // on déclare nos variables
    FILE * fi = NULL;//on initialise le pointeur
    
    fi = fopen("fic.txt", "w+");//on tente d'ouvrir le fichier en écriture
    
    if(fi==NULL){ // le test se place ici pas dans la boucle
    printf("\n Fichier inexistant\n");
    return;
    }
    
    do{//une boucle do...while est selon moi plus appropriée
    
    printf("Saisir caractere \n");//on demande d'entrer un caractére
    
    c = getchar();//on récupére le caractére
    
    fputc( c, fi);//on inscrit le caractére dans le fichier
    
    }while(c!=ton_caractere_qui_signale_la_fin_de_l_ecriture)// tout est dit
    
    fclose(fi);//on n'oublie le pointeur !
    
    return 0;
    }


    Qui devrait compiler sauf distraction.

    Cordialement,

    le_framboisier.
    1
  2. le père
     
    Bonsoir,
    fp = fopen("fic.txt", "w+");
    devrait mieux marcher
    0
  3. le_framboisier Messages postés 7 Statut Membre 2
     
    Bonsoir,
    la solution de le père est bonne à un détail près il me semble : fp n'est pas défini mais fi si donc
    fi = fopen("fic.txt","w+"); est selon moi plus approprié.

    Cordialement,

    le_framboisier
    0
  4. rachou1 Messages postés 32 Statut Membre 1
     
    Merci pour ces indications :) , il n'y a plus d 'erreur de compilation .
    Mais il n'y a toujours rien d'écrit dans mon fichier fic.txt ..
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. rachou1 Messages postés 32 Statut Membre 1
     
    Merci beaucoup pour ton aide, en effet ça marche !
    Desolé, j'ai a nouveau une question... Au lieu de récupérer les caractères un à un, j'aimerai récupéré une chaine de caractère en entière. Pour cela on utilise bien fgets ? fgets(phrase, size of phrase, fi)
    Mais pour la variable c on le laisse en int et on crée une nouvelle variable char phrase[256] pour y mettre la phrase tapé ?
    0
  7. le_framboisier Messages postés 7 Statut Membre 2
     
    Bonsoir,

    Tout d'abord je suis content que cela compile :) .

    Ensuite fgets est bien le moyen le plus approprié pour récupérer une chaîne de caractères dans un fichier.
    Tu peux effectivement utiliser une variable char phrase[256] pour stocker ta phrase mais cela peut provoquer des erreurs si l'entrée dépasse cette quantité a priori cela ne devrait pas poser de réels problèmes dans ton cas donc tu peux te le permettre
    .
    Si toutefois ça t'intéresse, tu peux te renseigner sur l'allocation dynamique de mémoire (grâce à malloc) et l'utilisation de l'opérateur sizeof qui sont un bon moyen de gérer ce genre de situation. De plus, la variable c devient alors inutile vu que l'on utilisera seulement phrase[256] pour stocker notre chaîne.

    P.S. : l'idéal c'est d'aller voir dans la documentation (pour fgets notamment) :). Google est ton ami ! Et pense à mettre ton sujet en résolu !

    Cordialement,

    le_framboisier
    0
  8. rachou1 Messages postés 32 Statut Membre 1
     
    D'accord merci beaucoup de ton aide ! :)
    0