2010-11-30 20 views
0

Je rencontre des problèmes avec l'ouverture d'un fichier de base. Je n'arrive pas à lancer le flux de fichiers avec succès. Il revient constamment NULL ... Quelqu'un peut-il me dire ce que je manque? J'ai créé un fichier "test.dat" dans le même répertoire que celui du code source.Ouverture de fichiers à modifier

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

int main (void) 
{ 
    if((cfPtr = fopen("test.dat", "rb+")) == NULL) { 
     printf("File could not be opened.\n"); 
    } 
    return 0; 
} 
+0

Il devrait être dans le répertoire courant. Dans le cas de MSVC, ce serait le répertoire du fichier de projet. – ruslik

+2

Votre code est-il compilé? Vous n'avez même pas déclaré de type pour 'cfPtr'. – birryree

+0

J'ai inclus juste un extrait du code. J'ai corrigé le répertoire et tout va bien. J'ai glissé dans mon esprit! Merci beaucoup. – user523513

Répondre

1

Essayez de déplacer le fichier test.dat dans le répertoire où la compilation des vies .exe, ou si le répertoire courant de l'application est un autre endroit, placez le fichier dans ce répertoire.

1

Lorsque vous essayez d'ouvrir un fichier, votre système d'exploitation recherchera quel que soit le processus le répertoire actuel. Cela peut ou peut ne pas être le même répertoire que celui où réside votre fichier source, en fonction de votre système d'exploitation et/ou de votre IDE.

1

Utilisez-vous Visual Studio? Vous devez mettre test.dat dans le répertoire Debug. Il y a deux répertoire de débogage dans une version plus récente, vous devez vérifier cela vous-même.

1

Vous pouvez utiliser la errno pour obtenir une indication quant à ce qui se passe mal:

#include <stdio.h> 
#include <stdlib.h> 
#include <errno.h> /* new */ 

int main (void) 
{ 
    if((cfPtr = fopen("test.dat", "rb+")) == NULL) { 
     printf("File could not be opened.\n"); 
     printf("Errno = %d\n, errno) ; /* new */ 
    } 
    return 0; 
} 
+1

En outre, quelque chose comme 'perror (" fopen ")' vous donnerait un message d'erreur lisible par un humain. –