PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablentypen-Verknüpfung



Sveni
06.08.2006, 13:50
Nochmals Grüße an alle!
Weiß, dass ich Einsteiger bin O:) - Daher offenbaren sich mir immer neue Probleme:
Ist es möglich an einen String eine int bzw double Variable zu hängen?
Bsp.: String("Part"), Int("01") -> "Part01"
Die int-Variable ist der Counter einer for-Schleife.

Meine Idee:

"char name[250];
int i;

for(i=0; i<5; i++)
{
name[250]=strcat(name,i);
}"


Es entstehen keine Fehler beim compilieren-Programm stürzt nur ab.
Danke!!

Babbage
07.08.2006, 10:19
Hi Sveni

strcat(char *dest, const char *src);
Hängt an einen String einen anderen dran.
Da strcat als 2. Parameter auch einen Nullterminierten String erwartet kannst Du nicht einfach einen integer übergeben.
Dazu must Du vorher den Integer in einen String umwandeln
z.B. mit itoa(int value, char *string, int radix);

Dafür solltest Du einen 2. String mit

char Intstring[50];
definieren und den dann mit

itoa(i,Intstring,10);
aufrufen (Die 10 bedeutet 10er System)

Was in Deinem Programm nicht nötig ist, ist die Zuweisung des strings da in name bereicht das Ergebnis reingeschrieben wird.

char name[250];
char Intstring[50];
int i;

for(i=0; i<5; i++)
{
strcat(name, itoa(i,Intstring,10) );
}

Damit müßtest Du Erfolg haben.

In Standard C ist das alles noch etwas mühsam.
Schau dir mal den Befahl fprintf an. Vielleicht erfüllt der deine Anforderungen etwas einfacher.

Babbage

ogni42
07.08.2006, 11:15
sprintf() ist Dein Freund.

Babbage
07.08.2006, 12:25
thx ogni42

ja, logisch sprintf, fprintf ist für streams.
Man wird halt auch nicht jünger.

ogni42
07.08.2006, 13:58
Ja, wem sagst Du das? Muss mir schon die Seite merken, zu der ich morgen aus dem Bett aufstehe :D

pebisoft
08.08.2006, 17:54
sprintf() sollte man für den avr nicht nehmen, ist sehr speichertintensive und langsam.

ogni42
11.08.2006, 15:57
Was nimmt man stattdessen - außer selber schreiben, was bei der Funktionalität von sprintf, am Ende wahrscheinlich ebenfalls "speicherintensiv und langsam" ist?

PicNick
11.08.2006, 17:26
Das zusätzliche Problem bei den ganzen Befehlen mit einem "Format-Specifier" (printf, fprintf, sprintf, scanf, etc) ist eben, daß dieser Format String ja auch erstmal interpretiert werden muß. Und das braucht (zusätzlich).
Wenn also beim kompilieren schon klar ist, was wie konvertiert werden muß, kann man diese Arbeit einsparen.