Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Spinnt denn mein strcat?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.08.2003, 22:26 Uhr
Pablo
Supertux
(Operator)


Spinnt mein strcat oder spinne ich?

Wenn ich hab:

C++:
#include <stdio.h>
#include <string.h>

int main()
{
        int i;
        char buffer[255];
        for(i=0;i<10;++i)
                strcat(buffer, "s");
        printf("%s\n",buffer);
}


bekomme ich folgendes Ergebnis:

Code:
àg@ssssssssss



Wenn ich buffer als static deklariere dann bekomme ich

Code:
ssssssssss



Wieso? Wenn ich aber eine sehr große Zahl in buffer eingebe, dann funktioniert es ohne static. Wie gesagt, wer von uns beide spinnt, mein strcat oder ich?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.08.2003, 23:05 Uhr
~Martin
Gast


Könnte daran liegen, daß du den String nicht initialisierst, daß also nur Müll drinsteht. Strcat sucht nun das Ende, also die erste Null, die ist eben nicht am Anfang.

Versuchs mal so:

C++:
#include <stdio.h>
#include <string.h>

int main()
{
    int i;
    char buffer[255];
    buffer[0]=0;
    for(i=0;i<10;++i)
    strcat(buffer, "s");
    printf("%s\n",buffer);
}



Gruß,
Martin

--edit: Pablo. [ cpp ] richtig gesetzt --

Dieser Post wurde am 28.08.2003 um 23:09 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.08.2003, 23:10 Uhr
Pablo
Supertux
(Operator)


Ich glaueb schon, ich hab es shcon initialisiert und dann verschwand das Problem. Klar, deshalb funktioniert mit static.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.08.2003, 05:18 Uhr
kronos
Quotenfisch
(Operator)


mit dem strcat steh' ich auch auf kriegsfuß. nimm einfach
sprintf(buffer,"%ss",buffer);
dann musst du nicht an die ollen nullen denken

--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.08.2003, 08:24 Uhr
Pablo
Supertux
(Operator)


Habe ich auch daran gedacht, aber das Problem mit dem strcat habe ich bereits gelöst. Ich hab nur das char[..] initialisiert.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.08.2003, 09:38 Uhr
0xdeadbeef
Gott
(Operator)


Und ssprintf kostet ganz gut Zeit. Sinnvoller wäre für speziell diese Geschichte eigentlich

C++:
for(int i = 0; i < 10; ++i)
  buffer[i] = 's';
buffer[10]='s';


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.08.2003, 09:41 Uhr
Pablo
Supertux
(Operator)


In diesem Beispiel schon, aber ich hatte in meinem Programm eine lange Zeichenkette, bei der die Buchstaben sich nicht wiederholen. Aber das ist ja egal, das Problem habe ich bereits gelöst.

Die Funktion hat eine char* bekommen und sollte die unnötige Leerzeichen löschen. Das hab ich schon erledigt.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: