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

Raspberry Pi Discussion :

Ouverture de fichier dans un programme en C


Sujet :

Raspberry Pi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Ouverture de fichier dans un programme en C
    Bonjour

    Je souhaite réaliser un programme en c++ qui permette de lire dans un fichier texte sous strech sur Raspy3 VB
    Le programme ci dessous fonctionne sans problème sous windows.

    Code c : 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
    30
    #include <stdio.h>
     
     
    int main()
    {
    	FILE *MonFichier;
    	char nb[3];
     
     
    	if ((MonFichier = fopen("cmd2.txt", " w+t")) == NULL) // ouverture du fichier en ecriture
    		printf( "le fichier ne peut pas etre ouvert\n");
    	else
    	{
    		for (int i = 0; i < 3 ;i++)
    			nb[i] = (char)('v' - i);
    		// Write 3 characters to stream
    		fwrite(&nb, sizeof(char), 3, MonFichier);
    		fclose(MonFichier);
    	}
     
    	if ((MonFichier = fopen("cmd2.txt", " r")) == NULL) // ouverture du fichier en lecture
    		printf("le fichier ne peut pas etre ouvert\n");
    	else
    	{
    		while (fread(&nb, sizeof(char), 3, MonFichier), !feof(MonFichier))//lecture jusqu'à la fin du fichier
    		//cout << "nombre transmis: " <<nb<< endl;
    		printf("Contenu du fichier = %.3s\n", nb);
    		fclose(MonFichier);
    	}
    }

    Par contre j'arrive à créer un exécutable sous strech mais lorsque je le lance il n'arrive pas à accéder au fichier.
    Je me suis dis que cela venait peut être des droits sur le fichier
    j'ai donc mis tout les droits à tous les utilisateurs.

    Nom : droit.png
Affichages : 669
Taille : 1,5 Ko
    J'ai essayé que la lecture en créant le fichier texte même réponse.
    J'avoue ne pas comprend
    Merci pour votre aide.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Le fichier .txt n'a pas besoin des droits en exécution.
    Quelle est l'erreur que vous obtenez ?

    Sinon, écrivez ./cmd2.txt au lieu de cmd2.txt dans votre programme (dans le fopen).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour,

    J'ai beaucoup hésité avant de poster une réponse sur cet article.
    C'est clair que le fichier cmd2.txt n'a pas besoin des droits en exécution, seulement la lecture, et c'est le cas.

    On parle d'un fichier texte sous strech sur Raspy3 VB. Je ne comprends pas.
    Stretch est la dernière version de Raspbian. Raspy3 veut sans doute dire Raspberry Pi 3.
    Quand à VB, ce n'est pas du Visual Basic, je crois, mais veut dire sans doute Version B.
    Donc on parle, je pense, d'un Raspberry Pi 3 Raspbian Stretch.

    Le programme fonctionne sans problème sous Windows donc il a été compilé sous Windows.
    Comme il est relativement standard, il devrait pouvoir avoit été compilé par un peu n'importe quel compilateur, par exemple g++.

    Ensuite il a été compilé sous Raspbian et sur le Raspberry Pi 3 B.
    Ce serait bien de nous l'indiquer ... ou si un cross compiler (toolchain) a été utilisé
    Ensuite l'exécutable devrait être déposé, en principe, pour simplicité, dans le même répertoire que cmd2.txt.

    On a vraiment besoin de plus d'info pour pouvoir aider.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    Bonjour,

    Indice : lignes 10 et 21, le mode d'ouverture du fichier n'est pas bon.

    Juste par curiosité, quel compilateur a été utilisé sous Windows ? Il paraît beaucoup plus tolérant que gcc.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous merci pour vos réponses

    Finalement en m'inspirant d'un exemple j'ai un programme qui fonctionne (je n'ai besoin que d'ouvrir un fichier texte basique pour récupérer une valeur numérique à transmettre à un potentiomètre numérique)
    Code C++ : 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
     
    #include <stdio.h>
    #include <stdlib.h>   /*  pour exit  */
    int main() 
    {
    	FILE  *fi;
    	char nb[3];
     
    	fi  = fopen("essai.txt", "r");//  attitude obligatoire    :    tester    si       l'ouverture  a  réussie
    	if  (!fi) 
    	{	printf("Ouverture en lecture du fichier impossible !\n");
    		perror("fopen"); //    affichage du message  d'erreur système
    		exit(-1);  // sortie du programme
        }
    	else
    	{
    		printf("Ouverture en lecture du fichier réussie !\n");
    		while (fread(&nb, sizeof(char), 3, fi), !feof(fi))//lecture jusqu'à la fin du fichier
    		printf("Contenu du fichier = %.3s\n", nb); //.3 on ne prend que les 3 premières valeurs
    		fclose(fi);//on ferme avant de quitter
    	}
     
    	return 0;
    }

    Sinon pour répondre à vos questions
    En effet j'utilise un Raspberry Pi 3 Raspbian Stretch.
    Après je comprend toujours pas pourquoi le programme initial ne fonctionne pas.
    L'erreur indiqué est "fopen: invalid argument"
    Pourtant dans mon 2° programme qui fonctionne j'ai la même instruction pour l'ouverture du fichier
    Sous Windows je l'ai compilé le programme avec Visual Studio 2017 (C++)
    Sous Raspbian j'ai utilisé g++, après je ne pense pas que cela vienne de la compilation puisque l’exécutable est créé.
    Donc xdelatour je suis preneur pour la bonne commande pour l'ouverture du fichier.
    Merci encore.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    Dans la chaîne de caractères du mode d'ouverture du fichier, l'espace au début est en trop, il suffit de le supprimer et ça marche (dans le 2e programme, ligne 9, il n'y a justement pas d'espace dans "r").

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci xdelatour, il est vrai que sous linux il faut être rigoureux et faire attention à tous les caractères saisis tel que les espaces !

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

Discussions similaires

  1. Ouverture de fichier dans une application web
    Par ksouna dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 18/09/2008, 11h10
  2. ouvrir un fichier dans un programme VBA sous excel
    Par bryan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/01/2008, 14h38
  3. SaveFileDialog pour un fichier dans un programme
    Par jockyboss777 dans le forum VB.NET
    Réponses: 67
    Dernier message: 09/06/2007, 18h43
  4. ouverture de fichier dans un autre editeur
    Par epeichette dans le forum Eclipse PHP
    Réponses: 2
    Dernier message: 02/06/2007, 16h58
  5. Enregistrer un fichier dans un programme
    Par zak39 dans le forum Signal
    Réponses: 2
    Dernier message: 29/12/2006, 17h20

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