Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/06/2008, à 22:02

wwiki

CodeBlocks fopen Ubuntu8.04

Bonjour à tous,

J'ai un phénomène étrange avec le code suivant :

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("FileExample\n");

    FILE* inFile = NULL;
    inFile = fopen("test","r");

    if (inFile == NULL)
    {
        fprintf(stderr, "Error open file.\n" ) ;
    }
    else
    {
        printf("File open.\n");
        fclose(inFile);
    }

    return 0;
}

Lorsque j'utilise le bouton Run de CodeBlocks le fichier est toujours ouvert => Dysfonctionnement.
Lorsque j'execute le programme en ligne de commande , c'est ok => Fonctionnement correct.

Il me semble que cela vient des options de CodeBlocks.

Checking for existence: /home/user/Workspace/FileExample/bin/Release/FileExample
Executing: xterm -T FileExample -e /usr/bin/cb_console_runner LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. /home/user/Workspace/FileExample/bin/Release/FileExample  (in /home/user/Workspace/FileExample/.)

Vous en pensez quoi ? roll

#2 Le 28/06/2008, à 22:07

nicolas.sitbon

Re : CodeBlocks fopen Ubuntu8.04

Développe un peu plus, quel test as tu fais? pourquoi prendre le fichier "test" en particuliers?

Hors ligne

#3 Le 29/06/2008, à 15:00

wwiki

Re : CodeBlocks fopen Ubuntu8.04

nicolas.sitbon a écrit :

Développe un peu plus, quel test as tu fais? pourquoi prendre le fichier "test" en particuliers?

Le fichier test est un exemple, il ne contient rien.

Pour illustrer le test, je joinds 2 captures d'écrans. Ces captures d'écran permettent de voir le fonctionnement en ligne de commande et grâce au bouton  Run de CodeBlocks avec ou sans fichier test.

fileexamplefilexb4.th.png

fileexamplenofiletg3.th.png

roll

#4 Le 29/06/2008, à 16:12

robrob

Re : CodeBlocks fopen Ubuntu8.04

La différence est sans doute le répertoire d'execution.
Par exemple, sous kde, quand tu cliques sur un executable, il est lancé à partir du home/ et pas de son "vrai" répertoire. Il est possible de Code Blocks ait le même comportement.

Essaye d'afficher au démarrage le répertoire courant du programme (par exemple avec un system("pwd") )

Dernière modification par robrob (Le 29/06/2008, à 16:13)

Hors ligne

#5 Le 29/06/2008, à 16:16

nicolas.sitbon

Re : CodeBlocks fopen Ubuntu8.04

En fait, il faudrait vérifier le répertoire de travail de ton programme quand celui ci est lancé par code block car il existe un fichier test dans /usr/bin, donc si le le répertoire de travail est /usr/bin alors forcément le fichier est toujours présent. Utilise la fonction getcwd() pour imprimer le répertoire courant et dis nous.

Hors ligne

#6 Le 29/06/2008, à 16:55

robrob

Re : CodeBlocks fopen Ubuntu8.04

D'un autre côté, à moins de lancer code block en root, il aura du mal à générer un exécutable dans /usr/bin tongue

Hors ligne

#7 Le 29/06/2008, à 17:03

wwiki

Re : CodeBlocks fopen Ubuntu8.04

Bien vu nicolas.sitbon et robrob.

getcwdbg6.th.png

Il ne me reste plus qu'a trouver comment configurer codeblocks car si je mets un chemin relatif , il y aura confusion.

Je vois pas trop comment gérer çà avec cet IDE.

roll

Hors ligne

#8 Le 29/06/2008, à 17:17

nicolas.sitbon

Re : CodeBlocks fopen Ubuntu8.04

robrob a écrit :

D'un autre côté, à moins de lancer code block en root, il aura du mal à générer un exécutable dans /usr/bin tongue

Pas besoin de le générer, le fichier test est toujours dans /usr/bin.

Hors ligne

#9 Le 29/06/2008, à 17:19

nicolas.sitbon

Re : CodeBlocks fopen Ubuntu8.04

wwiki a écrit :

Bien vu nicolas.sitbon et robrob.

http://img104.imageshack.us/img104/173/getcwdbg6.th.png

Il ne me reste plus qu'a trouver comment configurer codeblocks car si je mets un chemin relatif , il y aura confusion.

Je vois pas trop comment gérer çà avec cet IDE.

roll

Je ne connais pas code block mais je sais que dans tous les IDE un temps soit peu sérieux, il y a possibilité dans les options du projet de modifier le répertoire de travail. Autrement, rien ne t'empêche de modifier celui ci par programmation, voir chdir() et fchdir().

Hors ligne

#10 Le 29/06/2008, à 19:13

wwiki

Re : CodeBlocks fopen Ubuntu8.04

Bonsoir à tous,

J'ai touché un peu par approximation les options de codeblocks .
Enfin, il y a le fonctionnement correct.

Dans Project>Build targets sous Execution working dir bin/Release est renseigné.

Le tout en image.

executionworkindfirtg9.th.png

cool

[Résolu]

Hors ligne