pb de fscanf / fprintf [C/C++] - Programmation
Marsh Posté le 05-11-2001 à 14:26:18
C'est un peu cours jeune homme...
donne nous le reste de ton code...
Marsh Posté le 05-11-2001 à 14:35:18
merde j'etais persuade qu'on mettait pas un & pour les chaines
Marsh Posté le 05-11-2001 à 14:35:23
ya que ca dans ma fonction c'est pour ca
jai reduit ma fonction au strict minimum mais ca merd tj
voiod load()
{
FILE *fd;
char *data,com,baudrate;
fd = fopen("conf.dat","r" );
fscanf(fd,"%s\n",&data);
fscanf(fd,"%s\n",&com);
fscanf(fd,"%s\n",&baudrate);
Bprintf(hDlg,0,T_3,"%s",&data);//routine faisant un printf dans une edit box
Bprintf(hDlg,0,T_2,"%s",&com);
Bprintf(hDlg,0,T_1,"%s",&baudrate);
fclose(fd)
}
sans le fscanf(fd,"%s\n",&baudrate);
le com s'affiche nikel dans l'edit T_2
le 7 saffiche nikel dan l'edit T_3
avec le fscanf(fd,"%s...
ca freeze
Marsh Posté le 05-11-2001 à 14:36:26
t'es sur qu'il y a un \n a la fin de ta 3eme chaine (conseil de cm2 mais bon...)
Marsh Posté le 05-11-2001 à 14:36:34
Godbout > sans le & c'est frezzeee total scrontch beurp !!! (pas beau a voir koi)
Marsh Posté le 05-11-2001 à 14:38:16
Godbout > jai essaye avec et sans le \n meme effet ai rajoute dans mon fichier .dat un\n a la fin sans effet non plus
le truc c'est ke ca me freeze aussi dans la geule pour un fprintf en boucle
Marsh Posté le 05-11-2001 à 14:47:15
Houla
char *data,com,baudrate;
fd = fopen("conf.dat","r" );
fscanf(fd,"%s\n",&data);
fscanf(fd,"%s\n",&com);
fscanf(fd,"%s\n",&baudrate);
au derniere nouvelles fscanf ne fait pas d'alloc de memoire
donc tes data & cie pointe sur rien du tout, donc ca va pas
char data[50],com[50],baudrate[50];
fd = fopen("conf.dat","r" );
fscanf(fd,"%s\n",data);
fscanf(fd,"%s\n",com);
fscanf(fd,"%s\n",baudrate);
c pas sublime mais ca doit marcher
tu notera que le "&" a fait le saut dans le scanf
en effet, data tout court = &data[0], ce qui equivaut a l'adresse de la premiere case du tableau (donc tout va bien)
edit :
char *data,com,baudrate;
huh fait gaffe aussi, la seul "data" est pointeur sur caractere...
[edtdd]--Message édité par chrisbk--[/edtdd]
Marsh Posté le 05-11-2001 à 14:48:09
merde j'suis con c'est normal (ou alors j'suis gol )
Pour les chaines il ne faut effectivement pas mettre de &.
Essaye en les enlevant et en faisant
char data[255];
memset(data, 0, 255);
pareil pour les 3 char
Marsh Posté le 05-11-2001 à 14:49:42
Godbout a écrit a écrit : merde j'suis con c'est normal (ou alors j'suis gol ![]() Pour les chaines il ne faut effectivement pas mettre de &. Essaye en les enlevant et en faisant char data[255]; memset(data, 0, 255); pareil pour les 3 char |
roooooh je le reconnais ce memset
Marsh Posté le 05-11-2001 à 14:52:51
warrfff moi ki me fesait pas chier a mallocer
bon c'est repartit ..... thx
et pour les fprintf
fd = fopen("toto.txt","w" );
for(i = 0 ; i < 300; i++)
fprintf(fd,"%s\n","toto" );
fclose(fd);
la aussi ca frezze au bout d'environ 80 lignes pourtant ya pas de mallocage a faire
Marsh Posté le 05-11-2001 à 14:54:02
fd = fopen("toto.txt","w" );
for(i = 0 ; i < 300; i++)
fprintf(fd,"%s\n",toto);
fclose(fd);
pas de "" a toto !!
Marsh Posté le 05-11-2001 à 14:57:50
si je me trompe pas deja pour les fichiers textes c'est "rt" pour la lecture et "wt" pour l'ecriture
Marsh Posté le 05-11-2001 à 15:04:02
zarb ton truc
meme un
for (int i=0;i<300;i++)
{
fprintf(fd,"pouet" );
}
coince ?
Marsh Posté le 05-11-2001 à 15:04:33
sinon c koi ta variable toto ?
c bien une chaine de caractere se finissant par \0 ?
Marsh Posté le 05-11-2001 à 15:12:22
oui toto est bien une chaine dde char terminant par \0
pour le wr rt => voir msdnc'est bien w et r
pour le fprintf(fd,"toto" ); jessaye et je vous tien au courant
Marsh Posté le 05-11-2001 à 15:22:45
bon pour le fpritf ca a lair de bien fonctioner en dehors de mon programme
en gros ce ke je fait
dans le
WM_INITDIALOG:
je fait mon fopen
WM_TIMER:
je fait mes differente op d'ecriture
ID_CANCEL
je fait mon fclose
donc je suis environ 30 a 40 secondes avec un fd ouvert et je fait de op d'ecriture a des temps plus ou moin long allant de l'instantane a la minute entre 2op d'ecriture
Marsh Posté le 05-11-2001 à 15:24:29
question con :
ta variable fd est bien declare en static ou en global ?
Marsh Posté le 05-11-2001 à 15:30:43
fd est un FILE *fd;
dans ma fonction donc pas global est ce que un FILE * est un static jai pas ete voir mais pense ke si
si c'est ca je me jette par la fenetre car le je suis trop une merde .....
(ca vas je suis au 1er et en desous c'est de la pelouse
)
Marsh Posté le 05-11-2001 à 15:33:57
huh
a priori ton fd est plus initialise correctement (tu l'init dans le WM_INITDIALOG, et tu ecrit dans le WM_TIMER, c a d qu'entre tps tu es sorti puis rerentre dans ta fonction)
essaye avec :
static FILE *fd;
a la place de
FILE *fd;
Marsh Posté le 05-11-2001 à 15:36:28
c'est decidé je saute
ca me vaut rien les week de 4J ca rapporte de bleux
je reviens dans 5min le temps de sauter et revenir
Marsh Posté le 05-11-2001 à 16:00:30
ah la la?
pourquoi tu vas pas chercher un bouquin pour apprendre le C ca irait plus vite, non??
LEGREG
ps: en tout cas c'est plus efficace que de risquer de se casser le coup en se defenestrant (aka installation de linux )
[edtdd]--Message édité par legreg--[/edtdd]
Marsh Posté le 05-11-2001 à 16:13:12
ben en fé a pas fait goof ces 2 trucs le savait le coup du malloc et le coup du static c'est pour ca glouuppppsss ...
je suis une merdeuuuuuuu
Marsh Posté le 05-11-2001 à 14:03:25
mon fichier conf.dat :
7
COM4
57600
mon code source:
fd = fopen("conf.dat","r" );
fscanf(fd,"%s\n",&data);
fscanf(fd,"%s\n",&com);
fscanf(fd,"%s\n",&bau);
Bprintf(hDlg,0,T_3,"%s",&data);
Bprintf(hDlg,0,T_2,"%s",&com);
Bprintf(hDlg,0,T_1,"%s",&baudrate);
fclose(fd)
les 2 premiers scanf fonctionnent tout bien mais mon dernier scanf fait freezer le tout
jobtient le meme effet en faisant des fprintf en boucle au bout d'environ 80 fprintf sur un fd ca freeze ..
d'ou ca peut venir?
hlp plz