Forum: Compiler & IDEs String Kopieren-Problem


von Frank (Gast)


Lesenswert?

habe da folgenden Code:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <string.h>
4
5
#define STRING_LENGTH 100
6
7
int main()
8
{
9
    char vorname[45] = {"ABC"};
10
    char vorname2[10] = {"ABC"};
11
12
    if(strcmp(vorname, vorname2))
13
        printf("Strings nicht gleich!!");
14
    else
15
        printf("Strings gleich!");
16
17
    strcpy(&vorname[4], vorname2);
18
    printf("Ausgabe: %s", vorname);
19
20
    return 0;
21
}

Wieso kopiert strcpy den string vorname2 nicht an Vierter Stelle von 
vorname????
Das müsste doch so hinhauen!

von Mik (Gast)


Lesenswert?

Weil du an die fünfte Stelle kopierst?

von Tom K. (ez81)


Lesenswert?

Mik schrieb:
> Weil du an die fünfte Stelle kopierst?

... und an der 4. Stelle von vorname noch das 0-Byte steht, so dass 
für printf der String dort zuende ist.

von Hermann-Josef M. (hermann-josef)


Lesenswert?

So isses...

root [8] strcpy(&vorname[4], vorname2);
root [9] printf("%s\n",vorname);
ABC

root [10] strcpy(&vorname[3], vorname2);
root [11] printf("%s\n",vorname);
ABCABC

Hermann-Josef

von Frank (Gast)


Lesenswert?

Aha, dh ich müsste auch das \0 von vorname wegmachen, da ich es ja an 
dieser Position nicht überschreibe, danke!

von Mik (Gast)


Lesenswert?

Der Index fängt bei 0 an da vertut man sich manchmal. BTW strcat() würde 
es automatisch an der richtigen Stelle einfügen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.