Voici mon code qui vérifie si le fichier existe:question sur l'existence de fichier dans C
#include<stdio.h>
#include<zlib.h>
#include<unistd.h>
#include<string.h>
int main(int argc, char *argv[])
{
char *path=NULL;
FILE *file = NULL;
char *fileSeparator = "/";
size_t size=100;
int index ;
printf("\nArgument count is = %d", argc);
if (argc <= 1)
{
printf("\nUsage: ./output filename1 filename2 ...");
printf("\n The program will display human readable information about the PNG file provided");
}
else if (argc > 1)
{
for (index = 1; index < argc;index++)
{
path = getcwd(path, size);
strcat(path, fileSeparator);
printf("\n File name entered is = %s", argv[index]);
strcat(path,argv[index]);
printf("\n The complete path of the file name is = %s", path);
if (access(path, F_OK) != -1)
{
printf("File does exist");
}
else
{
printf("File does not exist");
}
path=NULL;
}
}
return 0;
}
En exécutant la commande ./output test.txt test2.txt La sortie est:
$ ./output test.txt test2.txt
Argument count is = 3
File name entered is = test.txt
The complete path of the file name is = /home/welcomeuser/test.txt
File does not exist
File name entered is = test2.txt
The complete path of the file name is = /home/welcomeuser/test2.txt
File does not exist
maintenant test.txt existe sur le système:
$ ls
assignment.c output.exe output.exe.stackdump test.txt
et encore test.txt est présenté comme un fichier existant non.
S'il vous plaît aidez-moi à comprendre le problème ici. Aussi, n'hésitez pas à poster des suggestions pour améliorer le code/éviter un bug.
Cordialement, Darkie
Vous avez toujours pas résolu les problèmes de défaut de segmentation que vous aviez dans votre dernière question. Vous pourriez vouloir corriger cela, juste parce qu'il ne plante pas ne signifie pas qu'il fonctionne correctement. – SoapBox
Salut SoapBox, Je crois que le défaut Seg était parce que la taille n'a pas été définie avec une valeur. Je l'ai assigné à 100. S'il vous plaît laissez-moi savoir s'il y a quelque chose de plus. –
Vous devriez vérifier la valeur dans errno après l'appel d'accès pour comprendre pourquoi il pense qu'il n'existe pas. Oh et allouer un peu d'espace pour le chemin aussi. – Craig