IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Problème de droits d'accès


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 66
    Points
    66
    Par défaut Problème de droits d'accès
    Bonjour à tous,
    Je suis en train de me remettre au C et j'essaie de lire le contenu d'un fichier puis de l'afficher.
    le code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include<iostream>
     
     
    int main();
     
    int main(){
    	FILE *fichier;
    	fichier = fopen("textee.txt","w");
    	fprintf(fichier, "i l");
    	fclose(fichier);
     
    	char a,b;
    	fichier = fopen("textee.txt","r");
    	fscanf(fichier,"%s %s",a,b);
    	printf("%s %s\n",a,b);
    	fclose(fichier);
    return 1;
    }
    A chaque compilation, le premier fichier est bien créé par contre à chaque lecture de ce même fichier, le logiciel plante m'affichant l'erreur suivante "Unhandled exception in essai.exe : 0xC000000R : Access Violation".
    Apparement il doit s'agir d'un problème d'accès à l'un de mes fichiers mais je ne vois pas pourquoi.
    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Tu ne testes pas si l'ouverture du fichier a réussi.
    Si fopen() retourne un pointeur nul, passer ce pointeur à une fonction agissant sur les flux entraîne un comportement indéfini.

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour

    • <iostream> : pas du C
    • Toujours tester le retour de fopen
    • attention à l'utilisation de scanf : les paramètres et le format ne pas logiques ici.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    09-02-06.c:4:19: iostream: No such file or directory
    09-02-06.c:7: warning: function declaration isn't a prototype
    09-02-06.c:9: warning: function declaration isn't a prototype
    09-02-06.c: In function `main':
    09-02-06.c:17: warning: format argument is not a pointer (arg 3)
    09-02-06.c:17: warning: format argument is not a pointer (arg 4)
    09-02-06.c:17: warning: format argument is not a pointer (arg 3)
    09-02-06.c:17: warning: format argument is not a pointer (arg 4)
    09-02-06.c:18: warning: format argument is not a pointer (arg 2)
    09-02-06.c:18: warning: format argument is not a pointer (arg 3)
    09-02-06.c:18: warning: format argument is not a pointer (arg 2)
    09-02-06.c:18: warning: format argument is not a pointer (arg 3)
    09-02-06.c:15: warning: 'a' might be used uninitialized in this function
    09-02-06.c:15: warning: 'b' might be used uninitialized in this function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include<stdio.h>
    #include<stdlib.h>
     
    /* main n'a pas d'argument ? on met void*/
    int main(void)
    {
        FILE *fichier;
        fichier = fopen("textee.txt", "w");
        /* test du retour de fopen */
        if (NULL == fichier) {
            /* si quelque chose s'est mal passé, on l'écrit */
            perror("textee.txt");
        } else {
            fprintf(fichier, "i l");
            fclose(fichier);
        }
     
        char a, b;
        fichier = fopen("textee.txt", "r");
        if (NULL == fichier) {
            perror("textee.txt");
        } else {
            /* utilisation de scanf : on veut lire deux caractères */
            fscanf(fichier, "%c %c", &a, &b);
            printf("%c %c\n", a, b);
            fclose(fichier);
        }
        return EXIT_SUCCESS;
    }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 66
    Points
    66
    Par défaut
    Apparement il fallait effectivement lui passer des pointeurs. Par contre j'essaie de faire cela dans une autre fonction pour lire des doubles et apparement je n'utilises pas le bon type car ce ne sont pas les bons chiffres qui apparaissent sur ma console.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    valus = fopen("parameters.txt","r");
    if (valus != NULL){
    	printf("entree de boucle\n");
    	fscanf(valus, "%e \t%e \t%e \t%e \t%e \t%e", &xi, &eta, &zeta, &Betac, &rho, &sigma);
    	printf("%e\t%e\t%e\t%e\t%e\t%e\n", xi, eta, zeta, Betac, rho, sigma);
    	fclose(valus);
    	printf("fin boucle\n");
    }
    Betai = zeta*Betac;
    fclose(test);


    .....
    J'ai utilisé le type %lf et cela fonctionne mais je ne sais pas si c'était le plus optimal donc si vous avez une meilleure idée, n'hésitez pas !

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    J'ai utilisé le type %lf et cela fonctionne mais je ne sais pas si c'était le plus optimal
    Optimal, dans quel sens ? qui est le plus rapide, qui est le plus sûr... ?

    Code http://www.rt.com/man/scanf.3.html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
           f      Matches an optionally signed floating-point number;
                  the next pointer must be a pointer to float.
     
           e      Equivalent to f.
     
           g      Equivalent to f.

    %e ou %f pour les flottants simple précision (float), %le, %lf pour les double précision (double).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de droit d'accès aux fichiers (Vista/NTFS)
    Par webgig2002 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 15/07/2009, 17h10
  2. Réponses: 2
    Dernier message: 10/07/2008, 11h36
  3. ReportViewer problème de droit d'accès
    Par flogreg dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/04/2008, 15h13
  4. Problèmes de droits d'acces
    Par patator68 dans le forum Applets
    Réponses: 2
    Dernier message: 03/12/2007, 10h55
  5. Problème de droits d'accès
    Par hayaet dans le forum Langage
    Réponses: 1
    Dernier message: 29/06/2007, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo