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

  FORUM HardWare.fr
  Programmation
  C++

  char buf[255] ou char buf[256] ?

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

char buf[255] ou char buf[256] ?

n°265819
Cherrytree
cn=?
Posté le 09-12-2002 à 18:40:15  profilanswer
 

Qu'est ce que vous en pensez ? Je suis sur que vous vous êtes déjà posé cette question !


---------------
Le site de ma maman
mood
Publicité
Posté le 09-12-2002 à 18:40:15  profilanswer
 

n°265823
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 09-12-2002 à 18:43:48  profilanswer
 

Cherrytree a écrit :

Qu'est ce que vous en pensez ? Je suis sur que vous vous êtes déjà posé cette question !

:heink:


---------------
du bon usage de rand [C] / [C++]
n°265827
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 18:49:59  profilanswer
 

Si c'est pour un nom de fichier, char buf[MAX_PATH] ou un truc du genre, non ?
de toute façon logiquement ça doit être 256...


Message édité par antp le 09-12-2002 à 18:52:29

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265829
mareek
Et de 3 \o/
Posté le 09-12-2002 à 18:51:45  profilanswer
 

Cherrytree a écrit :

Qu'est ce que vous en pensez ? Je suis sur que vous vous êtes déjà posé cette question !

[:antptt] c'est quoi ce topicalacon  :heink:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°265830
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 18:52:48  profilanswer
 

Bonne question, j'attends la justification de la part de l'auteur...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265831
bjone
Insert booze to continue
Posté le 09-12-2002 à 18:53:05  profilanswer
 

i was here [:debeman]

n°265832
mareek
Et de 3 \o/
Posté le 09-12-2002 à 18:53:51  profilanswer
 

antp a écrit :

Bonne question, j'attends la justification de la part de l'auteur...

c'est surement un boolay de la klika en forsse  :pfff:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°265833
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 09-12-2002 à 18:54:07  profilanswer
 

antp a écrit :

Si c'est pour un nom de fichier, char buf[MAX_PATH] ou un truc du genre, non ?
de toute façon logiquement ça doit être 256...

sous windows peut etre... :whistle:


---------------
du bon usage de rand [C] / [C++]
n°265840
Cherrytree
cn=?
Posté le 09-12-2002 à 18:55:47  profilanswer
 

En fait, je suis en train de me frapper MSDN : et voilà le fragment de code sur lequel je tombe.

Code :
  1. #include <stdarg.h>
  2. #include <wtypes.h>
  3. void VarArg(LPCSTR formatstring, ...)
  4. {
  5.    int nSize = 0;
  6.    char buff[255];
  7.    va_list args;
  8.    va_start(args, formatstring);
  9.    nSize = _vsnprintf( buff, sizeof(buff), formatstring, args);
  10. }
  11. void main() {
  12.    VarArg("%s World", "Hello" );
  13. }


 
Vous voyez, il y a le char buff[255] ! C'est censé (antp ! ça s'écrit comme ça) être un buffer qui s'inscrit pile poil dans un nombre de bytes entier.
 
La question est : le type de MS avait-il raison de penser comme il l'a fait ou aurait-il dû écrire buf[256] ?


---------------
Le site de ma maman
n°265841
Cherrytree
cn=?
Posté le 09-12-2002 à 18:56:09  profilanswer
 

mareek a écrit :

c'est surement un boolay de la klika en forsse  :pfff:  

Salope !
 
Mon dictionnaire me signale que ça ne prend qu'un p.


Message édité par Cherrytree le 09-12-2002 à 19:00:47

---------------
Le site de ma maman
mood
Publicité
Posté le 09-12-2002 à 18:56:09  profilanswer
 

n°265844
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 18:56:54  profilanswer
 

TAZ > oui :D


Message édité par antp le 09-12-2002 à 18:57:07

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265846
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 18:57:36  profilanswer
 

Cherrytree a écrit :

(antp ! ça s'écrit comme ça)  


 
:fuck:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265861
Cherrytree
cn=?
Posté le 09-12-2002 à 19:01:53  profilanswer
 

Moi perso j'aurai mis un char buf[256]. Allô ? Je suis désolé ! Dites-moi qqch ?


---------------
Le site de ma maman
n°265866
bjone
Insert booze to continue
Posté le 09-12-2002 à 19:02:56  profilanswer
 

Cherrytree a écrit :

En fait, je suis en train de me frapper MSDN : et voilà le fragment de code sur lequel je tombe.

Code :
  1. #include <stdarg.h>
  2. #include <wtypes.h>
  3. void VarArg(LPCSTR formatstring, ...)
  4. {
  5.    int nSize = 0;
  6.    char buff[255];
  7.    va_list args;
  8.    va_start(args, formatstring);
  9.    nSize = _vsnprintf( buff, sizeof(buff), formatstring, args);
  10. }
  11. void main() {
  12.    VarArg("%s World", "Hello" );
  13. }


 
Vous voyez, il y a le char buff[255] ! C'est censé (antp ! ça s'écrit comme ça) être un buffer qui s'inscrit pile poil dans un nombre de bytes entier.
 
La question est : le type de MS avait-il raison de penser comme il l'a fait ou aurait-il dû écrire buf[256] ?


 
bin [256] me parait plus logique, au moins la variable déclarée après sur la pile sera plus facilement aligné sur un DWORD...

n°265873
bjone
Insert booze to continue
Posté le 09-12-2002 à 19:04:48  profilanswer
 

mé bon cha me parait arbitraire comme décision de foutre 255...

n°265877
Cherrytree
cn=?
Posté le 09-12-2002 à 19:05:57  profilanswer
 

bjone a écrit :


 
bin [256] me parait plus logique, au moins la variable déclarée après sur la pile sera plus facilement aligné sur un DWORD...

Bin voilà, pareil. Donc le gars de MSDN a pas réfléchi avant d'écrire.


---------------
Le site de ma maman
n°265878
Cherrytree
cn=?
Posté le 09-12-2002 à 19:06:26  profilanswer
 

bjone a écrit :

mé bon cha me parait arbitraire comme décision de foutre 255...

Que veux-tu dire, grand maître ?


---------------
Le site de ma maman
n°265883
Carbon_14
Posté le 09-12-2002 à 19:13:06  profilanswer
 

Il ne voulait peut-être stocker que 254 caractères utiles :D :ange:. Le 0 terminal, ça doit pas être rentré dans toutes les têtes.
 
Comme quoi le copier/coller direct sans relecture ou critique peut qq fois générer des problèmes.

n°265895
drasche
Posté le 09-12-2002 à 19:28:05  profilanswer
 

mais s'il déclare un buff[255], il peut foutre 256 chars dedans dont le NULL terminal, ce qui fait plutôt 255 chars utiles non?
 
(me demande où je suis tombé là)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°265900
lorill
Posté le 09-12-2002 à 19:41:28  profilanswer
 

Drasche a écrit :

mais s'il déclare un buff[255], il peut foutre 256 chars dedans dont le NULL terminal, ce qui fait plutôt 255 chars utiles non?


:heink:
 
sans être médisant, on voit que tu fais du vb :o

n°265901
Carbon_14
Posté le 09-12-2002 à 19:43:47  profilanswer
 

Quand on fait char toto[0], ça donne une chaîne de 1 caractère ?
Je pensais benoîtement que l'on déclarait le NOMBRE (>= 1) et qu'on adressait l'INDICE à partir de ZERO. Suis pas pro du tout, donc je dois me fourvoyer.
 
KC&C 2ème ed., Masson, page 22, int nchiffre[10]; déclare nchiffre comme un tableau de 10 entiers. En C, les indices des tableaux commencent toujours à zéro, donc les éléments de nchiffre sont [0], .., [9].


Message édité par Carbon_14 le 09-12-2002 à 19:44:17
n°265903
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-12-2002 à 19:45:52  profilanswer
 

Lors de la déclaration, c'est char[longueur_totale] et le dernier indice sera longueur_totale - 1. Donc ici, la chaîne de caractères fait 255 octets. Effectivement, 256 n'aurait pas blessé grand-monde sauf dans le cas d'un nom de fichier sous Windows. En effet, un nom de fichier (ou un path complet, j'sais pu) est limité à 255 caractères et non 256. Va savoir pourquoi  :sarcastic:
 
EDIT : ah ba non, d'après quelques recherches rapides sous Gougueule, il semblerait que la taille max pour un nom de fichier soit 260 caractères :heink: 'fin y a des trucs bien spaces. Cf http://packetstormsecurity.nl/9902 [...] 98.bof.txt pour ceux qu'ça intéresse  [:spamafote]


Message édité par Taiche le 09-12-2002 à 19:49:37
n°265904
drasche
Posté le 09-12-2002 à 19:54:10  profilanswer
 

lorill a écrit :


:heink:
 
sans être médisant, on voit que tu fais du vb :o


avant de faire du VB j'ai fait du C et du Pascal...
 
pour moi un char buff[255], ça réserve 256 chars indicés de 0 à 255.
 
edit: merde ok autant pour moi je m'a trompé :D


Message édité par drasche le 09-12-2002 à 19:55:37

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°265915
xilebo
noone
Posté le 09-12-2002 à 20:03:56  profilanswer
 

de toute facon le compilateur aligne sur DWORD donc autant mettre 256 ...
 
typedef struct {
    char buf[5];
    int toto;
}test;
 
sizeof(test) = ???? bah pas 9 mais 12
 

n°265922
Cherrytree
cn=?
Posté le 09-12-2002 à 20:09:21  profilanswer
 

Bon, ben je suis bien content : ça répond (allez savoir pourquoi) à une question existencielle pour moi !


---------------
Le site de ma maman
n°265927
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 20:16:54  profilanswer
 

Taiche a écrit :

Lors de la déclaration, c'est char[longueur_totale] et le dernier indice sera longueur_totale - 1. Donc ici, la chaîne de caractères fait 255 octets. Effectivement, 256 n'aurait pas blessé grand-monde sauf dans le cas d'un nom de fichier sous Windows. En effet, un nom de fichier (ou un path complet, j'sais pu) est limité à 255 caractères et non 256. Va savoir pourquoi  :sarcastic:
 


 
justement, 256 octets = 255 caractères du nom de fichier + le zéro terminal, c'est pour ca que j'avais dit que j'aurais mis 256


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265934
mareek
Et de 3 \o/
Posté le 09-12-2002 à 20:20:15  profilanswer
 

Taiche a écrit :

Lors de la déclaration, c'est char[longueur_totale] et le dernier indice sera longueur_totale - 1. Donc ici, la chaîne de caractères fait 255 octets. Effectivement, 256 n'aurait pas blessé grand-monde sauf dans le cas d'un nom de fichier sous Windows. En effet, un nom de fichier (ou un path complet, j'sais pu) est limité à 255 caractères et non 256. Va savoir pourquoi  :sarcastic:
 
EDIT : ah ba non, d'après quelques recherches rapides sous Gougueule, il semblerait que la taille max pour un nom de fichier soit 260 caractères :heink: 'fin y a des trucs bien spaces. Cf http://packetstormsecurity.nl/9902 [...] 98.bof.txt pour ceux qu'ça intéresse  [:spamafote]  

après quelques tests très avancé de ma part, je peux vous annoncer fièrement que la taille maxi d'un nom de fichier sous windows XP est de 206 caractères sur le bureau, 251 caractères à la racine de C:, 220 caractères dans un répertoire quelconque sur D: ....... :pt1cable:  
 
c'est quoi ce bordel ? :??:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°265938
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 09-12-2002 à 20:21:53  profilanswer
 

mareek a écrit :

après quelques tests très avancé de ma part, je peux vous annoncer fièrement que la taille maxi d'un nom de fichier sous windows XP est de 206 caractères sur le bureau, 251 caractères à la racine de C:, 220 caractères dans un répertoire quelconque sur D: ....... :pt1cable:  
 
c'est quoi ce bordel ? :??:  


 
Ca s'appelle Windows  :whistle:

n°265970
taureau
Posté le 09-12-2002 à 20:51:11  profilanswer
 

ben le bureau c'est déjà un répertoire donc tu dois le rajouter à ton nom de fichier...

n°265980
mareek
Et de 3 \o/
Posté le 09-12-2002 à 20:56:22  profilanswer
 

Taureau a écrit :

ben le bureau c'est déjà un répertoire donc tu dois le rajouter à ton nom de fichier...

avec le chemin complet, ça fait 257 caractères sur le bureau alors que ça fait 254 caractères à la racine de C :heink:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°265981
lorill
Posté le 09-12-2002 à 20:57:31  profilanswer
 

Taureau a écrit :

ben le bureau c'est déjà un répertoire donc tu dois le rajouter à ton nom de fichier...


 :??:  
alors si j'ai un truc dans C:/plop/pika/plop/toto/tata/titi/tutu/zb/merde/.../plop/toto/prout/coin, le nom doit etre ridiculement petit ?
 
ahem. :heink:

n°265985
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 20:59:10  profilanswer
 

mareek a écrit :

après quelques tests très avancé de ma part, je peux vous annoncer fièrement que la taille maxi d'un nom de fichier sous windows XP est de 206 caractères sur le bureau, 251 caractères à la racine de C:, 220 caractères dans un répertoire quelconque sur D: ....... :pt1cable:  
 
c'est quoi ce bordel ? :??:  


 
la limite c'est pas le nom d'un fichier mais le chemin complet.
donc c:\fichier.ext = 14 caractères.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265987
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 20:59:43  profilanswer
 

ptain grilled :/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265989
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 21:00:05  profilanswer
 

lorill a écrit :


 :??:  
alors si j'ai un truc dans C:/plop/pika/plop/toto/tata/titi/tutu/zb/merde/.../plop/toto/prout/coin, le nom doit etre ridiculement petit ?
 
ahem. :heink:


 
oui


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265991
lorill
Posté le 09-12-2002 à 21:00:32  profilanswer
 

antp a écrit :

ptain grilled :/

même dit précédement, ca reste totalement crétin...

n°265993
lorill
Posté le 09-12-2002 à 21:01:02  profilanswer
 


j'ose pas le croire :o

n°265995
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 21:02:00  profilanswer
 

bhen sinon comment tu veux savoir d'office quelle taille de variable tu dois prévoir :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°266000
mareek
Et de 3 \o/
Posté le 09-12-2002 à 21:04:57  profilanswer
 

test dans mes documents: nom du fichier+chemin 255 caractères max.  :heink:  


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°266005
lorill
Posté le 09-12-2002 à 21:09:10  profilanswer
 

antp a écrit :

bhen sinon comment tu veux savoir d'office quelle taille de variable tu dois prévoir :??:


ben comment on fait sous unix ?
même en debut de deuxieme année d'iut quand on a du coder une version light du SGF de sys V, on n'avait pas cette limitation. Le nom de fichier en lui même était limité a 14 octets, mais les repertoires n'entraient pas en ligne de compte.

n°266047
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 22:01:53  profilanswer
 

je sais pas comment on fait sous Linux, moi je fais mes softs sous Delphi & C++Builder.
J'utilise TFileName qui est juste un typedef d'AnsiString sous Builder et de string sous Delphi, donc je fais pas attention à la longueur :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  char buf[255] ou char buf[256] ?

 

Sujets relatifs
C++ : delete d'un char * : quelle est la bonne solution ?Formatage date sous ORACLE et PHP [Resolu avec TO_CHAR]
String To Char Help[c] ya un truc que je capte po avec scanf et les char
[C/C++] Copier un char* dans un char*? pas resolu-C'est pour ce soir:/C truc a la con : c quoi char to int en C ?? merci
[info C] getchar ne get pas du tout un char[C++] retourner un char []
Gros newbie inside .... lecture de char dans un fichier HELP !!![C/C++] Définir la valeur par défaut d'un argument de type char *
Plus de sujets relatifs à : char buf[255] ou char buf[256] ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR