1

Bon, c'est du C pour la PSP, mais au cas ou, je pose ma question ici...

mon pb est simple : j'essaye d'acceder à un fichier pour ecrire dedant, et ca me plante net ma psp.

le code est le suivant :
#include <pspkernel.h> #include <stdio.h> PSP_MODULE_INFO("test", 0, 1, 1); PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER); void debug(char* txt, bool erase = false) {      FILE *file;      if (erase)  file = fopen("./debug.txt", "w");      else        file = fopen("./debug.txt", "a");      fputs(txt, file);      fputs("\n", file);      fclose(file); } int main(int argc, char* argv[]) {     debug("Ouverture du fichier", true);      debug("Fermeture du fichier");      // fin du jeu      sceKernelExitGame();      return 0; }

dès que je fais un fopen, ca me retourne 0 => du coup le fputs et le fclose font planter la psp

le fait que fputs et fclose fassent planter si file est null, c'est normal.

mais que fopen refuse de m'ouvrir le fichier, et de me retourner un pointer de type FILE, ca je ne le comprends pas...

quelqu'un aurait une idée ?
Ancien pseudo : lolo

2

bah ton code a l'air correct, si ce n'est que tu ne vérifies pas que l'ouverture a réussi... y'a pas un problème de chemin propre à la PSP, ou un autre genre de truc spécifique à la plate-forme ?

(c'est dans quel C qu'on peut mettre des valeurs par défaut aux paramètres ? hum)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

dans tous les C LoL smile

pour le coup du test de l'ouverture de fichier, je ne voulais pas en mettre, etant donné que c'est un fichier de debug il est toujours sencé être ok.... Car sinon ca n'a plus d'intéret ^^

pour le chemin, je ne sais pas, mais je voulais mettre un chemin relatif pour pas que ca dépende du répertoire d'installation...

ca me fait chier ce pb, j'arrive à faire de la 3D et tout, mais j'arrive pas à charger une pauvre texture ou à ecrire dans un fichier texte....
Ancien pseudo : lolo

4

Spipu (./3) :
dans tous les C LoL smile

non, j'aurais pas posé la question ^^
pour le coup du test de l'ouverture de fichier, je ne voulais pas en mettre, etant donné que c'est un fichier de debug il est toujours sencé être ok.... Car sinon ca n'a plus d'intéret ^^

vi mais c'est quand même un peu dommage si c'est ton debug qui fait planter ton programme grin
pour le chemin, je ne sais pas, mais je voulais mettre un chemin relatif pour pas que ca dépende du répertoire d'installation...

et quand tu mets en absolu, ça marche ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

Zephyr (./4) :
Spipu (./3) :
dans tous les C LoL smile.gif
non, j'aurais pas posé la question ^^


lol vi forcement smile ben je sais pas, dans tous ceux que j'ai utilisé, ca a toujours marché (et c'est bien pratique)
Zephyr (./4) :
et quand tu mets en absolu, ça marche ?


il faudrait que j'essaye, mais le pb c'est que je ne connais pas le chemin absolu à indiqué pt de vue de la psp en interne...
Ancien pseudo : lolo

6

1/ en C ANSI en tout cas, pas de valeurs par défaut si je me souviens bien.

2/ Et pourquoi pas faire un printf du path courant ?
Tu as essayé de regarder voir si sur ce path, ton exe a les droits d'écriture ?
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

7

1/ ah ok smile ben je savais pas.

2/ normalement, il n'y a pas de gestion de droit sur les fichiers. De plus, j'ai essayé avec une ouverture juste en lecture, et ca plante egalement...
Ancien pseudo : lolo

8

true et false n'existent pas non plus en C ISO (sauf en C99 si tu inclus <stdbool.h>).
Ton code est du C++ sans objets en fait.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

vi tout à fait, c'est du C++
Ancien pseudo : lolo

10

Essaie de faire fopen("debug.txt","w") sans le ./.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

ca plante egalement sad
Ancien pseudo : lolo

12

Jette un coup d'oeil ici, a priori les chemins relatifs ne fonctionnent pas et tu dois préfixer un chemin absolu par "ms0:/"
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

13

./12 c'est ce que je pensait, essaye avec un chemin absolu. a mon avis les chemin relatif ne peuvent fontionner car la PSP n'a pas de base de gestion de fichier comme on l'entent classiquement, et quand tu execute un soft on ne sais pas "exactement" ou il est (du moins le soft ne le sais pas et n'a pas "besoin" de le savoir (enfin pour un jeu PSP en tout cas ^^)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

14

et bien justement, c'est la le pb : ils conseillent de mettre les chemins en relatif, car suivant si tu compiles le programme pour PSP 1.50 ou PSP avec un firmware plus recent, le répertoire d'install change (GAME150 ou GAME352 par exemple pour une PSP en 3.52)

de plus, pour convertir un programme perso en ISO, il faut necessairement que les chemins soient précisés en relatif afin que l'iso fonctionne (c'est précisé dans les tutorials)

d'où le fait que je mets des chemins relatifs.

j'essayerais ce soir en chemin absolue, mais je ne pense pas que ce soit une bonne solution sad
Ancien pseudo : lolo

15

strange...
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

16

comme tu dis... ca fait depuis 3 semaines que cette connerie me bloquait, sauf qu'avant que je me rende compte d'ou venait le pb.. Car au départ, logique comme je suis, c'était en voulant charger une texture que ca plantait, et j'étais sur de mon fopen => je pensais que le pb venait d'ailleurs et je testais tout sauf lui... jusqu'à me rendre compte de mon erreur...
Ancien pseudo : lolo

17

Pense quand meme a ajouter des tests sur la valeur de file, ça evitera les crashs ^^
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

18

vivi smile mais j'en mettrais pas sur celui pour le debug, car si meme lui déconne, ben... voila quoi smile comment je débug moi !
Ancien pseudo : lolo

19

ben tu peut afficher une fenetre grin


ShowMessage("Warning your PSP is about to be bricked. Can I continue ?", "Yes", "Allow");
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

20

lool, ca la brique pas, ca la boque juste smile il suffit de l'etteindre et de la rallumer
Ancien pseudo : lolo

21

Je sais bien, c'était juste une blague grin
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

22

tusors
Ancien pseudo : lolo

23

au pire, tu as GAME$VERSION en virant les points et puis voilà smile
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

24

bon, ben le problème ne venait pas de mon code, mais du makefile...

il comprennait la directive "USE_PSPSDK_LIBC = 1", et c'est ca qui fesait foiré...

par contre, du coup, si j'enlève cette directive, j'ai du coup des erreurs de compilation qui apparaissent dès que je veux utiliser les commandes new et delete... pas très pratique ! par exemple :

C_keyboard	*clavier;

clavier = new C_keyboard(PSP_CTRL_MODE_ANALOG);
delete clavier;


ben il me dit qu'il ne connait pas new et delete...

du coup, je ne sais plus, comment on instantie un objet, et comment on le détruit (en appelant bien le constructeur et le destructeur) sans new et delete ?
Ancien pseudo : lolo

25

Non tu es obligé de passer par new et delete, il ne faut pas appeler les constructeurs/destructeurs explicitement.
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

26

ah ouais, donc t'as des new, des delete et des valeurs par défaut aux paramètres, mais à part ça c'est du C ton programme ? grin (cf post ./1)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

27

Spipu (./9) :
vi tout à fait, c'est du C++


Ancien pseudo : lolo

28

Spipu (./27) :
Spipu (./9) :
vi tout à fait, c'est du C

ouned grin
(mais sinon ui j'avais vu ^^)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

29

Twindruff (./25) :
Non tu es obligé de passer par new et delete, il ne faut pas appeler les constructeurs/destructeurs explicitement.


heuuu et avec malloc et free ?
Ancien pseudo : lolo

30

Zephyr (./28) :
Spipu (./27) :
Spipu (./9) :
vi tout à fait, c'est du C

ouned grin
(mais sinon ui j'avais vu ^^)

merde, quel con, j'avais oublié de prendre le ++ dans la citation LoL.. bref !
Ancien pseudo : lolo