PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Stringmanipulation -> String&



nul
14-08-2003, 17:55
Ich möchte Strings so bearbeiten, dass am Ende jeweils ein & steht, Praktisch aus

Hallo\0 wird Hallo&\0


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
char text_system[100];
const char entry_text[] = {"Hallo"};
int laenge, zaehler;

printf("Die Quelle:");
puts(entry_text);

laenge=strlen(entry_text);

printf("Stinglänge von entry_text: %d\n\n", laenge);

for (zaehler = 0; zaehler <= laenge; zaehler++)
{
text_system[zaehler] = entry_text[zaehler];
}

if (text_system[laenge] == '&')
{
}
else
{
text_system[laenge+1] = '&';
}
printf("Ziel:");
puts(text_system);

return 0;
}

Mit der if-Anweisung oben geht das nicht? Die Anweisung sagt doch, dass \0 zu & wird, wieso geht das nicht?

wraith
14-08-2003, 18:10
Du hast dich mit der Länge verhauen,sieh' her
laenge entry_text ist 5,damit steht an Position entry_text[5] das Stringendezeichen,und Position 5 + 1 ist bereits 'hinter' dem Stringende.
Also müßte dein else-Zweig laenge statt laenge + 1 sein,aber das ist auch nicht korrekt,weil dann der String nicht mehr Nullterminiert ist.

Eine viel kürzere und bessere Lösung ist


int main()
{
char text_system[100];
const char entry_text[] = {"Hallo"};

strcpy(text_system,entry_text);
strcat(text_system,"&");
printf("%s\n",text_system);
return 0;
}

nul
14-08-2003, 18:52
Danke, das wars.

Ich werde wohl noch lange brauchen bis ich von C wirklich was verstehe *gg*.