micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©
Het is fijn als je aangeeft wat je al zelf hebt gedaan.
Nu lijkt het op en script request en die zijn ernstig ongewenst.
Op maandag 27 mei 2002 15:55 schreef dawuss het volgende:
Ik heb dus twee INT's met bijvoorbeeld de waarden 128 en 064 nou wil ik een string hebben die "128064" als waarde heeft.
Daarna wil ik ook de waarde van de string weer terug kunnen zetten in twee INT's. Hoe kan ik dat doen?
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Maar hoe zie jij het voor je als je weer wilt opsplitsen? Zijn die int's altijd aan elkaar gelijk qua lengte ofzo?
Simpel while loopje op de lengte van de nummer-string.Op maandag 27 mei 2002 16:07 schreef Glimi het volgende:
Het zal wel helemaal fout zijn hoor en te simpel gedacht, maar als je beide eerst converteert naar een string en dan bij elkaar optelt zou je je gewenste effect moeten krijgen.
Maar hoe zie jij het voor je als je weer wilt opsplitsen? Zijn die int's altijd aan elkaar gelijk qua lengte ofzo?
elke keer 3 karakters eraf snoepen en dat dan omzetten naar letter.
Vandaar natuurlijk ook de vraag die hij vanmorgen stelde over omzetten van int-char
[topic=506317]
Dat vroeg ik juist. Staan die tekens vast? Weet je van te voren dat ze 3 tekens lang zijn. Of zijn ze allebei even groot.Op maandag 27 mei 2002 16:11 schreef Goodielover het volgende:
[..]
Simpel while loopje op de lengte van de nummer-string.
elke keer 3 karakters eraf snoepen en dat dan omzetten naar letter.
Vandaar natuurlijk ook de vraag die hij vanmorgen stelde over omzetten van int-char
[topic=506317]
Een van de twee moet wel, anders kan het IMHO niet
[edit]En dan mention ik nog niet eens dat er waarschijnlijk een waardeloos model achter zit!
Verwijderd
1
2
3
4
5
| int int1 = 128, int2 = 64; char buffer[128]; sprintf(buffer, "%3.3d%3.3d", int1, int2); |
string naar int:
1
2
3
4
5
| char *buffer = "128064"; int int1, int2; sscanf(buffer, "%3.3d%3.3d", %int1, &int2); |
1
| sprintf (buffer, "%03d%03d", int1, int2); |
(of natuurlijk gewoon "%06d" en int1 * 1000 + int2
en bij het adres doorgeven van int1 heb je een % gebruikt ipv een &
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
"%03d%03d"
precies in?
micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©
%3d zorgt ervoor dat er altijd minstens 3 tekens geschreven moeten worden, dus vult zonodig aan met spaties
de 0 voor de 3 betekent dat hij niet aangevult moet worden met spaties, maar met 0'en
dus 64 wordt dan ook geschreven als 064
Zie de documentatie over printf voor alle mogelijke specifiers en wat ze doen
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Ik heb een modem, dus ik moet steeds inbellen voor informatie over functies.
micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©
zonder die cd's kan het volgens mij niet... een MSDN subscriber licentie is geloof ik ongelooflijk duur, maar dan krijg je wel regelmatig updates (voor particulieren niet echt betaalbaar denk ik)
Je kunt de platform SDK gratis downloaden (130mb
misschien is een goed boek een goede optie?
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©
Tuurlijk wel -Op maandag 27 mei 2002 16:03 schreef Janoz het volgende:
daarnaast kan een INT nooit 064 bevatten.
int i = 064;
std::cout << i;
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Ja, en dan moet ik zeker straks gaan uitleggen waarom er 52 wordt afgedrukt...Op dinsdag 28 mei 2002 09:41 schreef MSalters het volgende:
[..]
Tuurlijk wel -
int i = 064;
std::cout << i;
Je kunt het er wel aan toekennen (wat voor sommigen iets anders oplevert dan ze zouden verwachten), maar aan de int zelf zie je geen verschil tussen wel of geen voorloop nullen.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Verwijderd
Volgens mij geeft 03d en 3.3d in linux hetzelfde resultaat...Op maandag 27 mei 2002 20:54 schreef .oisyn het volgende:
beelzebubu: bedoel je niet
code:
1 sprintf (buffer, "%03d%03d", int1, int2);
(of natuurlijk gewoon "%06d" en int1 * 1000 + int2)
Ff testen..
1
2
3
4
5
6
7
8
9
10
11
| [28 May 18:09 - rbultje@tux /tmp]# cat test.c
int main()
{
printf("%3.3d\n", 3);
printf("%03d\n", 3);
return 0;
}
[28 May 18:09 - rbultje@tux /tmp]# ./test
003
003
[28 May 18:09 - rbultje@tux /tmp]# |
Ja, ik slaap.en bij het adres doorgeven van int1 heb je een % gebruikt ipv een &