Trinity_vv
Messages postés26Date d'inscriptionjeudi 6 janvier 2005StatutMembreDernière intervention22 novembre 2005
-
10 janv. 2005 à 15:03
Trinity_vv
Messages postés26Date d'inscriptionjeudi 6 janvier 2005StatutMembreDernière intervention22 novembre 2005
-
10 janv. 2005 à 16:24
J'ai fais un code d'ouverture et d'affichage d'un fichier, tout marchait très bien. Sans exagérer 10 minutes plus tard, je le régénére et il ne veut plus fonctionner!!!
Voici le code en question :
#include <stdio.h>
#include <string.h>
void transform(char *str)
{
int cpt;
for (cpt=0; str[cpt] !='\0' ; cpt++);
if (cpt>0) str [cpt-1] = '\0';
}
int main ()
{
FILE *fichier;
char nom_fic[80];
const char *ext_fic = ".log";
char buf;
int ret=1;
int tot_lign=1;
printf ("Entrez le nom du fichier : ");
fgets (nom_fic, 80, stdin);
transform(nom_fic);
strcat(nom_fic, ext_fic);
fichier = fopen(nom_fic, "r");
if (fichier !=NULL)
{
do
{
ret=fread(&buf, sizeof(char), 1, fichier);
printf("%c", buf);
tot_lign++;
}while(!feof(fichier));
}
else
{
printf("Ce fichier n'existe pas.");
}
fclose(fichier);
}
Avec votre regard extérieur vous verrez peut être l'erreur qui me prend la tête.
Le message d'erreur est : erreur de syntaxe près de la marque inatendu ' ( ' en ligne 5.
Merci de votre aide
Etre ou ne pas être enervée
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 10 janv. 2005 à 15:15
En premier lieu, insère le fclose de ton fichier uniquement dans la condition où l'ouverture du fichier est un succès. Sinon, ton code retourne une erreur d'accès mémoire (normal, si fichier est égal à NULL, impossible de libérer un pointeur NULL).
A plus.
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 10 janv. 2005 à 15:27
Ca ne me choque pas, mais j'ai peut-être de la m... dans les yeux. Par hasard, tu ne ferais pas une inclusion d'un fichier autre que les en-têtes ANSI C ?
Tu bosses sur un Linux ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
meech
Messages postés209Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention14 août 2007 10 janv. 2005 à 16:05
Si ta fonction transforme ne sert qu'à retirer le caractère de retour-chariot, essaie avec celle-ci :
void transform(char* str)
{
if (!str) return;
*(str + strlen(str) - 1) = '\0';
}
En attente de nouvelles neuves... car pas d'erreur de mon côté.
Au fait, si tu fais des copier-coller d'un Windows à une console SSH, méfie-toi des caractères spéciaux de Windows.
Trinity_vv
Messages postés26Date d'inscriptionjeudi 6 janvier 2005StatutMembreDernière intervention22 novembre 2005 10 janv. 2005 à 16:24
Merci pour l'avertissement pour Windows.
J'ai trouvé le problème, c'est lorsque je débuguer que Linux faisait des siennes (solution : on éteind le serveur et on recommence).
Merci beaucoup de m'avoir filé un coup de main.