Bonjour,
J'ai pris un exemple pour présenter mon problème : j'aimerais que buf
contienne la chaîne 01234567 mais ça ne marche pas, comment faire ?
Int bin[8] ;
char *buf = new char [4];
for (int i = 0; i <= 7; i++){
tab[i] = i ;
cout << tab [i];}
sprintf(buf, "%d", tab);
cout << "\nbuf=" << buf;
delete [ ] buf;
merci pour votre aide
On Thu, 18 Dec 2003 15:25:05 +0100, Thomas Abbé wrote:
char* c1 = "01234567";
C'est valable, ça ?
Deprecated.
J'ai toujours un gros doute sur le fonctionnement de
char* c1 = "01234567"; c1[3]= '5';
À tes risques...
-- Michel Michaud http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
kanze
Fabien LE LEZ wrote in message news:...
On Thu, 18 Dec 2003 15:25:05 +0100, Thomas Abbé wrote:
char* c1 = "01234567";
C'est valable, ça ?
Oui, pour des raisons de compatibilité avec l'ancien.
J'ai toujours un gros doute sur le fonctionnement de
char* c1 = "01234567"; c1[3]= '5';
Comportement indéfini depuis C90. C'était bien défini dans le C de Kernighan et Richie ; certains compilateurs continuent à le supporter pour cette raison. Quelque soit le comportement par défaut du compilateur, il doit y avoir une option pour le changer (comme -fwritable-strings en g++, par exemple).
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Fabien LE LEZ <gramster@gramster.com> wrote in message
news:<22h4uvgiuo5hjp9738dphvcg5b3kfocgi0@4ax.com>...
On Thu, 18 Dec 2003 15:25:05 +0100, Thomas Abbé
<thomas_abbe@hotmail.com> wrote:
char* c1 = "01234567";
C'est valable, ça ?
Oui, pour des raisons de compatibilité avec l'ancien.
J'ai toujours un gros doute sur le fonctionnement de
char* c1 = "01234567";
c1[3]= '5';
Comportement indéfini depuis C90. C'était bien défini dans le C de
Kernighan et Richie ; certains compilateurs continuent à le supporter
pour cette raison. Quelque soit le comportement par défaut du
compilateur, il doit y avoir une option pour le changer (comme
-fwritable-strings en g++, par exemple).
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
On Thu, 18 Dec 2003 15:25:05 +0100, Thomas Abbé wrote:
char* c1 = "01234567";
C'est valable, ça ?
Oui, pour des raisons de compatibilité avec l'ancien.
J'ai toujours un gros doute sur le fonctionnement de
char* c1 = "01234567"; c1[3]= '5';
Comportement indéfini depuis C90. C'était bien défini dans le C de Kernighan et Richie ; certains compilateurs continuent à le supporter pour cette raison. Quelque soit le comportement par défaut du compilateur, il doit y avoir une option pour le changer (comme -fwritable-strings en g++, par exemple).
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Samuel Krempp
le Thursday 18 December 2003 14:45, écrivit :
Bonjour, J'ai pris un exemple pour présenter mon problème : j'aimerais que buf contienne la chaîne 01234567 mais ça ne marche pas, comment faire ? Int bin[8] ; char *buf = new char [4]; for (int i = 0; i <= 7; i++){ tab[i] = i ; cout << tab [i];} sprintf(buf, "%d", tab); cout << "nbuf=" << buf; delete [ ] buf; merci pour votre aide
J'arrive probablement un peu tard.. mais bon.
boost::format est là pour jouer le rôle de printf de façon C++ (il y a aussi une classe sur le site de james kanze).
si tu as installé boost (boost.org), ensuite tu fais :
#include <boost/format.hpp>
...
Int bin[8] ; std::string buf; boost::format("%d") fmter; for (int i = 0; i <= 7; i++){ tab[i] = i ; cout << tab [i]; fmter % i ; buf += fmter.str(); } cout << "nbuf=" << buf << endl;
-- Sam
le Thursday 18 December 2003 14:45, radio.mnt@freesurf.fr écrivit :
Bonjour,
J'ai pris un exemple pour présenter mon problème : j'aimerais que buf
contienne la chaîne 01234567 mais ça ne marche pas, comment faire ?
Int bin[8] ;
char *buf = new char [4];
for (int i = 0; i <= 7; i++){
tab[i] = i ;
cout << tab [i];}
sprintf(buf, "%d", tab);
cout << "nbuf=" << buf;
delete [ ] buf;
merci pour votre aide
J'arrive probablement un peu tard.. mais bon.
boost::format est là pour jouer le rôle de printf de façon C++ (il y a aussi
une classe sur le site de james kanze).
si tu as installé boost (boost.org), ensuite tu fais :
#include <boost/format.hpp>
...
Int bin[8] ;
std::string buf;
boost::format("%d") fmter;
for (int i = 0; i <= 7; i++){
tab[i] = i ;
cout << tab [i];
fmter % i ;
buf += fmter.str();
}
cout << "nbuf=" << buf << endl;
Bonjour, J'ai pris un exemple pour présenter mon problème : j'aimerais que buf contienne la chaîne 01234567 mais ça ne marche pas, comment faire ? Int bin[8] ; char *buf = new char [4]; for (int i = 0; i <= 7; i++){ tab[i] = i ; cout << tab [i];} sprintf(buf, "%d", tab); cout << "nbuf=" << buf; delete [ ] buf; merci pour votre aide
J'arrive probablement un peu tard.. mais bon.
boost::format est là pour jouer le rôle de printf de façon C++ (il y a aussi une classe sur le site de james kanze).
si tu as installé boost (boost.org), ensuite tu fais :
#include <boost/format.hpp>
...
Int bin[8] ; std::string buf; boost::format("%d") fmter; for (int i = 0; i <= 7; i++){ tab[i] = i ; cout << tab [i]; fmter % i ; buf += fmter.str(); } cout << "nbuf=" << buf << endl;
-- Sam
James Kanze
Samuel Krempp writes:
|> le Thursday 18 December 2003 14:45, écrivit : |> > J'ai pris un exemple pour présenter mon problème : |> > j'aimerais que buf contienne la chaîne 01234567 mais ça ne |> > marche pas, comment faire ?
|> > Int bin[8] ; |> > char *buf = new char [4]; |> > for (int i = 0; i <= 7; i++){ |> > tab[i] = i ; |> > cout << tab [i];} |> > sprintf(buf, "%d", tab); |> > cout << "nbuf=" << buf; |> > delete [ ] buf; |> > merci pour votre aide
|> J'arrive probablement un peu tard.. mais bon. |> |> boost::format est là pour jouer le rôle de printf de façon |> C++ (il y a aussi une classe sur le site de james kanze).
Certes, mais... Pour formatter un seul élément avec un %d, les ostream de la norme font aussi bien l'afaire.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
Samuel Krempp <krempp@crans.truc.en.trop.ens-cachan.fr> writes:
|> le Thursday 18 December 2003 14:45, radio.mnt@freesurf.fr écrivit :
|> > J'ai pris un exemple pour présenter mon problème :
|> > j'aimerais que buf contienne la chaîne 01234567 mais ça ne
|> > marche pas, comment faire ?
|> > Int bin[8] ;
|> > char *buf = new char [4];
|> > for (int i = 0; i <= 7; i++){
|> > tab[i] = i ;
|> > cout << tab [i];}
|> > sprintf(buf, "%d", tab);
|> > cout << "nbuf=" << buf;
|> > delete [ ] buf;
|> > merci pour votre aide
|> J'arrive probablement un peu tard.. mais bon.
|>
|> boost::format est là pour jouer le rôle de printf de façon
|> C++ (il y a aussi une classe sur le site de james kanze).
Certes, mais... Pour formatter un seul élément avec un %d, les
ostream de la norme font aussi bien l'afaire.
--
James Kanze mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
|> le Thursday 18 December 2003 14:45, écrivit : |> > J'ai pris un exemple pour présenter mon problème : |> > j'aimerais que buf contienne la chaîne 01234567 mais ça ne |> > marche pas, comment faire ?
|> > Int bin[8] ; |> > char *buf = new char [4]; |> > for (int i = 0; i <= 7; i++){ |> > tab[i] = i ; |> > cout << tab [i];} |> > sprintf(buf, "%d", tab); |> > cout << "nbuf=" << buf; |> > delete [ ] buf; |> > merci pour votre aide
|> J'arrive probablement un peu tard.. mais bon. |> |> boost::format est là pour jouer le rôle de printf de façon |> C++ (il y a aussi une classe sur le site de james kanze).
Certes, mais... Pour formatter un seul élément avec un %d, les ostream de la norme font aussi bien l'afaire.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
Samuel Krempp
le Friday 23 January 2004 22:00, écrivit :
Certes, mais... Pour formatter un seul élément avec un %d, les ostream de la norme font aussi bien l'afaire.
c'est clair. mais je sais pas ce que l'OP avait l'intention de faire en vrai, son exemple était forcément simplisite.
-- Sam
le Friday 23 January 2004 22:00, kanze@gabi-soft.fr écrivit :
Certes, mais... Pour formatter un seul élément avec un %d, les
ostream de la norme font aussi bien l'afaire.
c'est clair.
mais je sais pas ce que l'OP avait l'intention de faire en vrai, son exemple
était forcément simplisite.