2010-12-03 6 views
1

Je me suis posé des questions sur celui-ci. La plupart des livres que j'ai lu montre que lorsque vous ouvrez un fichier et que vous avez trouvé que le fichier est existant, vous devez mettre une erreur qu'il n'y a pas un tel fichier puis quittez le système ...C Programmation fopen() lors de l'ouverture d'un fichier

FILE *stream = NULL; 
stream = fopen("student.txt", "rt"); 
if (stream==NULL) { 
    printf(“Cannot open input file\n”); 
    exit(1); 
else {printf("\nReading the student list directory. Wait a moment please..."); 

Mais je pensais Au lieu de faire cela, pourquoi ne pas en créer automatiquement un nouveau lorsque vous avez découvert que le fichier que vous ouvrez n'existe pas. Même si vous n'écrivez pas sur le fichier lors de l'utilisation du programme (mais l'utiliserez la prochaine fois). Je ne suis pas sûr que ce soit efficace ou non. Je suis juste nouveau ici et n'ai aucune expérience de programmation de sorte que je demande votre opinion quels sont les avantages et les inconvénients de créer un fichier en essayant de l'ouvrir au lieu de sortir du système comme étant généralement illustré dans les livres.

FILE *stream = NULL; 
stream = fopen("student.txt", "rt"); 
    if (stream == NULL) stream = fopen("student.txt", "wt"); 
    else { 
      printf("\nReading the student list directory. Wait a moment please..."); 

Votre avis sera grandement apprécié. Je vous remercie.

+1

Ce qu'ils essaient en fait de vous apprendre, c'est la gestion des erreurs. Si au début vous allez écrire des programmes qui ne fonctionneront correctement que dans le cas "heureux", avec le temps vous devrez apprendre à prendre les bonnes décisions en cas d'erreurs. Vérifiez également cette question: http://stackoverflow.com/q/4302748/395626 – ruslik

Répondre

8

Parce que de votre exemple, il semble que ce soit un fichier d'entrée, s'il n'existe pas, aucun point de le créer. Par exemple, si le programme est supposé ouvrir un fichier, alors comptez combien de voyelles, alors je ne vois pas beaucoup de sens de créer le fichier s'il n'existe pas.

ma valeur de 0,02 $.

2

Si votre programme s'attend à ce qu'un fichier existe et qu'il ne l'est pas, en créer un vous-même n'a pas beaucoup de sens, car il va être vide.

Si OTOH, votre programme est OK avec un fichier n'existe pas et sait comment remplir un à partir de zéro, alors il est parfaitement bien de le faire.

L'un ou l'autre est bien tant que cela a du sens pour votre programme. Ne vous inquiétez pas de l'efficacité ici - c'est négligeable. Inquiétude à propos de la rectitude en premier.

5

mode Argument:

``r'' Open text file for reading. 
``r+'' Open for reading and writing. 
``w'' Truncate file to zero length or create text file for writing. 
``w+'' Open for reading and writing. The file is created if it does not 
     exist, otherwise it is truncated. 
``a'' Open for writing. The file is created if it does not exist. 
``a+'' Open for reading and writing. The file is created if it does not 
     exist. 

Votre question est un cas simple. Lire la description ci-dessus, lorsque vous appelez fopen(), vous devez décider quel mode doit être utilisé. Veuillez considérer pourquoi un fichier n'est pas créé pour "r" et "r +", et pourquoi un fichier est tronqué pour "w" et "w +", etc. Toutes ces conceptions sont raisonnables.

1

Vous n'êtes peut-être pas autorisé à créer/écrire dans un fichier du répertoire choisi par l'utilisateur. Vous devrez gérer cette condition d'erreur.

Questions connexes