Bonjour à tous j'aimerais avoir votre aide par rapport à un petit code que j'ai fait mais que ne fonctionne pas correctement
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#ifndef Win32
#include <sys/types.h>
#endif
int verif_ps(const unsigned char ver[25])
{
int res = 2;
int curseur = SEEK_SET;
unsigned char ver2[25];
FILE* fic = NULL;
struct dirent* fichier;
DIR* direct = NULL;
direct = opendir("C:\\Users\\User\\Documents\\fun\\src");
if (direct == NULL)
{
printf("erreur au niveau de l'ouverture du dossier.");
exit(1);
}
fic = fopen("test.txt","r+");
if (fic == NULL)
{
printf("impossible d'ouvrir le fichier");
exit(1);
}
while (curseur != SEEK_END)
{
fgets(ver2,sizeof(ver2),fic);
if (*ver == *ver2) {
res=1;
}
else {
res=0;
}
curseur = SEEK_CUR;
if (res == 1)
{
break;
}
}
printf("%d",&res);
fclose(fic);
closedir(direct);
return res;
}
(mon programme dispose d'une fonction main se trouvant dans un autre fichier) le soucis c'est qu'après compilation et exécution du programme je tombe sur "impossible d'ouvrir le fichier"
Le fichier existe dans un sous dossier que j'ai ouvert avec opendir a la ligne 16en gros cette fonction va prendre la chaîne de caractères qu'elle reçoit en paramètre et vérifie si cette chaîne existe dans le fichier
Et comme tu n'indique pas le chemin absolu, il doit être dans le répertoire courant. Est-ce le cas ?
Tu codes un peut au pif ? Ce n'est pas opendir qui va changer le répertoire courant !
Ce que tu peux faire c'est mettre le chemin complet pour ouvrir ton fichier.
PS : Une fois ouvert tu vas avoir d'autre surprises. (On dirait que tu prends des fonctions un peu au hasard en se disant que ça va peut-être marcher).
je comprends mon erreur,mais que voulez vous dire par surprise ?
Et bien, résous ton problème d'ouverture (*), et exécute ensuite ton programme (contrairement à ce que pense @rouloude, je crois qu'il y a une possibilté pour que ta boucle while ne tourne pas sans fin). Mais en ce qui concerne le résultat....
(*) cette partie ne devrait même pas se trouver dans cette fonction-là.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
> Le fichier existe dans un sous dossier que j'ai ouvert avec opendir a la ligne 16
Pas vraiment.
L'appel à opendir ne "place" pas dans le répertoire pour les ouvertures de fichiers (open/fopen) qui suivent.
Ca permet de passer en revue les différents éléments ("entries") qui existent dans un répertoire.
Code :
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <sys/types.h>
#include <dirent.h>
int main()
{
printf("Contenu de /var :\n");
DIR *dir = opendir("/var");
while (true) {
struct dirent *entry = readdir(dir);
if (entry == NULL) break;
printf("-> %s\n", entry->d_name);
}
return EXIT_SUCCESS;
}
Compilation et exécution
$ cc -std=c17 -Wall -Wextra -pedantic -Werror -Wno-unused \
-D_XOPEN_SOURCE=700 -g prog.c -o prog
$ ./prog
Contenu de /var :
-> .
-> run
-> tmp
-> cache
-> backups
-> opt
-> spool
-> lock
-> log
-> lib
-> mail
-> ..
-> local
-> snap
---
Quant à
if (*ver1 == *ver2)
ça compare le caractère pointé par ver1 et celui pointé par ver2.
Un de chaque.
- Edité par michelbillaud 4 mai 2023 à 17:35:29
Problème ficher .txt en C
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent