2017-09-19 8 views
1

J'essaie d'écrire du contenu dans un fichier à partir du terminal. Le fichier est en cours de création mais le contenu n'est pas écrit dans le fichier.Quel est le problème avec ce code de gestion de fichiers dans c?

#include<stdio.h> 
    #include<stdlib.h> 
    #include<math.h> 
    int main(int argc, char *argv[]) 
    { 
     FILE *fp; 
     fp=fopen(argv[1],"w"); 
     char ch; 
     while((ch=getchar())!=EOF) 
     { 
      putc(ch,fp); 
     } 
     fclose(fp); 
     return 0; 
    } 
+1

sidenote: Vérifiez toujours les valeurs de retour des fonctions E/S, y compris '' fopen' et putc'. – user694733

+2

Comment signalez-vous EOF? – user694733

+0

que se passe-t-il si vous affichez le caractère en cours de lecture juste avant d'appeler 'putc()'? –

Répondre

5

Si vous ne signale pas EOF (Ctrl + Z dans Windows et Ctrl + D sous Linux), la boucle continuera à exécuter jusqu'à ce qu'il reçoive le signal. Si vous essayez de lire le fichier de vos propres yeux alors que le programme est encore en exécution, alors le flux de fichier n'aura pas de fermeture (fclose(fp); ne sera pas exécuté), ainsi le fichier vous apparaîtra vide, même si le contenu vous sera montré, lorsque le flux de fichier se ferme.

1

Les travaux suivants: fins

#include<stdio.h> 
#include<stdlib.h> 
#include<math.h> 
int main(int argc, char *argv[]) 
{ 
    FILE *fp; 
    fp=fopen(argv[1],"w"); 
    char ch; 
    while(1) 
    { 
     ch = (char)getchar(); 
     putc(ch,fp); 
     if(ch == '.') break; 
    } 
    fclose(fp); 
    return 0; 
}