fopen() pour retourner un pointeur NULL, mais le fichier existe certainement

Le code que j'ai est comme suit:

FILE *txt_file = fopen("data.txt", "r");
if (txt_file == NULL) {
    perror("Can't open file");
} 

Le message d'erreur renvoyé est:

Ne pouvez pas ouvrir le fichier: Aucun fichier ou répertoire de

Le fichier 'data.txt" certainement il existe dans le répertoire de travail (il existe dans le répertoire qui contient mon .c et .h fichiers), alors pourquoi est-fopen() renvoie un pointeur NULL?

  • êtes-vous en cours d'exécution à partir de la ligne de commande ou à partir d'un IDE? Si IDE, êtes-vous sûr que le programme de travail de répertoire est créé dans le répertoire contenant le fichier de données?
  • pouvez-vous ajouter de la sortie de ls -Fal pour le répertoire en question?
  • vous avez peut-être n'avez pas la permission de l'ouvrir. êtes-vous sur linux?
  • Pouvez-vous joindre le code entier?
  • Quel est le répertoire courant de l'application? Avez-vous essayé avec un chemin absolu? Le fichier est ouvert en écriture par quelqu'un d'autre? Est-il d'un problème d'autorisations? Quel système d'exploitation et du système de fichiers est-ce?
  • Je suis en cours d'exécution à partir d'un IDE: Visual Studio 2008. Je vais avoir pour la recherche de la façon de vérifier son répertoire de travail.
  • Essayez le chemin d'accès complet: #define FULLPATHTOFILES "C:\\Users\\Barjavel\\Projects\\source\\bin\\debug\\" et txt_file = fopen(FULLPATHTOFILES "data.txt", "r"); Avis j'ai fini le texte de macro avec un final '\'
  • Vous pouvez obtenir le répertoire de travail en cours avec la _getcwd() fonction de l'utilisation que pour le débogage et l'apprentissage du répertoire de travail Visual Studio exécute votre programme en.
  • Je suis sur Windows 7. J'ai essayé le chemin d'accès absolu, de la forme "C:/User/SomeProject/source/bin/debug/somedirectory" qui renvoie la même erreur.

InformationsquelleAutor Barjavel | 2011-07-13