Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3268 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] fscanf foireux !!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] fscanf foireux !!

n°110079
Ded Jay
scratch
Posté le 10-03-2002 à 16:44:04  profilanswer
 

je declare un string par defaut :
 
char string[] = "c un string";
 
pui je voudrai le modifié par un autyre string d'un fichier
 
fscanf (stream,"%s",&string);
 
ce systeme fonctionne si il n'y a pa d'espace ds le string du fichier, si il y a un espace, il me nie le reste du string donc je sui obligé d'écrire
 
fscanf (stream,"%30s",&string);
 
et ce pour lui expliker ke je veux 30 characteres, mé là encore il merde si il ya un espace, donc g trouvé une troisieme possibilité
 
fscanf (stream,"%[^\n]s",&string);
 
et ce pour lui dire k'il doit prendre ts les characteres jusk'o \n et une fois de plus il merde :(
 
g essayé d variantes  
 
%30[^\n]s
%[\n]
 
mé ca merde tjs :( ya pa moyen d'avoir un string complet
 
PLZ HELP ME

mood
Publicité
Posté le 10-03-2002 à 16:44:04  profilanswer
 

n°110080
youdontcar​e
Posté le 10-03-2002 à 16:58:55  profilanswer
 

fscanf() c'est pour lire une chaîne dont tu connais le contenu exact. si tu veux lire un truc moins carré, lis ton fichier dans un buffer (avec fread() ) et débrouille-toi avec. c'est pas bien dur et surtout plus rapide que de multiples fscanf().

n°110178
torpe23
Posté le 10-03-2002 à 19:30:45  profilanswer
 

fais un fgets

n°110189
LetoII
Le dormeur doit se réveiller
Posté le 10-03-2002 à 20:09:29  profilanswer
 

Je confirme: fgets est la bonne solution, ça te prend toute la ligne jusqu'au \n (pour unix \r\n pour windows) et ça te met ça dans une string.


---------------
Le Tyran
n°110221
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-03-2002 à 23:30:54  profilanswer
 

puis y a pas mal d'erreur là:
 
char string[] = "c un string";
 
ensuite tu lis 30 caractères, mais string n'en contient pas 30 mais 11 (+ le 0 de fin de chaîne)
 
puis dans le scanf tu dois mettre string et pas &string, vu que c'est un tableau c'est déjà une adresse.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°110236
gilou
Modérateur
Modosaurus Rex
Posté le 11-03-2002 à 04:45:49  profilanswer
 

ded jay a écrit a écrit :

je declare un string par defaut :
 
char string[] = "c un string";
 
pui je voudrai le modifié par un autyre string d'un fichier
 
fscanf (stream,"%s",&string);
 
ce systeme fonctionne si il n'y a pa d'espace ds le string du fichier, si il y a un espace, il me nie le reste du string donc je sui obligé d'écrire
 
fscanf (stream,"%30s",&string);
 
et ce pour lui expliker ke je veux 30 characteres, mé là encore il merde si il ya un espace, donc g trouvé une troisieme possibilité
 
fscanf (stream,"%[^\n]s",&string);
 
et ce pour lui dire k'il doit prendre ts les characteres jusk'o \n et une fois de plus il merde :(
 
g essayé d variantes  
 
%30[^\n]s
%[\n]
 
mé ca merde tjs :( ya pa moyen d'avoir un string complet
 
PLZ HELP ME  




fscanf ne foire pas, mais marche exactement comme prévu:
fscanf découpe l'input (pour un %s) en chaînes de caractères séparées par un/des blancs.
Avant de raler il faudrait peut etre lire la doc.
"c un string" en input sera considere comme constitue de 3 chaines, "c" "un" et "string". C'est d'ailleuurs exactement selon ce principe que les arguments de main() sont traites.
A+,

 

[jfdsdjhfuetppo]--Message édité par gilou--[/jfdsdjhfuetppo]


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°110237
gilou
Modérateur
Modosaurus Rex
Posté le 11-03-2002 à 04:46:47  profilanswer
 

youdontcare a écrit a écrit :

fscanf() c'est pour lire une chaîne dont tu connais le contenu exact. si tu veux lire un truc moins carré, lis ton fichier dans un buffer (avec fread() ) et débrouille-toi avec. c'est pas bien dur et surtout plus rapide que de multiples fscanf().  




 :jap: Il a tout dit.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°110254
El_gringo
Posté le 11-03-2002 à 08:56:58  profilanswer
 

ça m'énerve les types qui se remettent jammais en cause: Quand ça marche pas, ça peut pas être eux. évidement, c langage qui à été mal conçu si qqch ne marche pas ! :fou:

n°111205
Ded Jay
scratch
Posté le 12-03-2002 à 18:35:08  profilanswer
 

g pa di ke le compilateur était foireux, g di ke g essayé ttes les facons ki étaient en ma connaissance et ca marchait pas, c pourkoi je vien demander de l'aide sur le forum

n°111209
Ded Jay
scratch
Posté le 12-03-2002 à 18:37:13  profilanswer
 

qd o fread(), on est obligé de savoir la longueur exact de la chaine à lire, et ds mon fichier, c pluto variable
 
et le scanf ki prend 3 chaines, c bien joli de savoir ca mé ca réponpa à ma kestion

mood
Publicité
Posté le 12-03-2002 à 18:37:13  profilanswer
 

n°111212
Ded Jay
scratch
Posté le 12-03-2002 à 18:40:47  profilanswer
 

et pour finir g réussi à trouver la soluce, l'idée du buffer était la bonne :
 
char buf[MAX];
 
fscanf (stream,"%[^\n]s",&buf);
strcpy (string,buf);
 
et là ca marche nikel :)

n°111329
gilou
Modérateur
Modosaurus Rex
Posté le 12-03-2002 à 20:46:49  profilanswer
 

ded jay a écrit a écrit :

et pour finir g réussi à trouver la soluce, l'idée du buffer était la bonne :
 
char buf[MAX];
 
fscanf (stream,"%[^\n]s",&buf);
strcpy (string,buf);
 
et là ca marche nikel :)  




strncpy (string,buf,MAX);  
ca devrait limiter certains risques, a supposer que string a une taille egale a MAX aussi.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] fscanf foireux !!

 

Sujets relatifs
[C] passer à la ligne avec fscanf ?Le best of des topics foireux - build 1.02 (-> updated)
[C/C++]pb de fscanf / fprintf[C] faire des fscanf et fprintf en reseau
Installer un Prog à partir des .cabs (setup foireux) ??? 
Plus de sujets relatifs à : [C++] fscanf foireux !!


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)