Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
01.05.2004, 10:17
unleash



mein quellcode sieht wie folgt aus
Quellcode:#include <string.h>


void changeDat(char *player)
{  
    char *str1;
    char *plDat = player;

    strcpy(str1,".dat");
    strcat(plDat,str1);
}
wird ohne fehler kompiliert
verwende ich die funktion innerhalb eines programmes stürzt es zur laufzeit ab
weiß jmd. woran das liegen könnte?

--

ich denke mal, es dauert nicht mehr allzulange, dann wird dein Nick sanft von unten rot angeleuchtet..
by WW
to iterate is human, to recurse, slow!


Dieser Beitrag wurde am 01.05.2004 um 10:26 von unleash bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
01.05.2004, 11:05
CN



guck dir noch mal pointer an
da is nich nur ein fehler drin

erstens mal hat str1 keinen speicher zur verfügung
du tust also ".dat" "irgendwo rein"
2tens (is nur mal so ne vermutung wegen dem was du oben auch shcon falsch gemacht hast) bezweifle ich mal dass player und somit plDat genug platz für str1 haben (sofern str1 speicher hätte)

--


Dieser Beitrag wurde am 01.05.2004 um 11:12 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
01.05.2004, 11:27
unleash



Zitat:
CN postete
erstens mal hat str1 keinen speicher zur verfügung
du tust also ".dat" "irgendwo rein"
wieso denn das?
ich dachte char *bla wäre nur eine andere schreibweise für char bla[] ?
dynamisch halt.
wenn ich jetzt zum beispiel char bla[4] mach ändert sich im verhalten leider auch nichts :/

--

ich denke mal, es dauert nicht mehr allzulange, dann wird dein Nick sanft von unten rot angeleuchtet..
by WW
to iterate is human, to recurse, slow!

zum Seitenanfang zum Seitenende Profil || Suche
003
01.05.2004, 12:34
TheVoice



musst ja auch bla[5] machen

'.','d','a','t','\0'

--

Against TCPA | Resourcecode.de | Blender 3D | [ Darkzone | Pandorra | Alpine ]

zum Seitenanfang zum Seitenende Profil || Suche
004
01.05.2004, 12:37
unleash



0-4 oder?
ich hab das jetzt so gelöst:
Quellcode:void changeDat(char player[10])
{  
    char str1[4];
    char plDat[10];
    
    strcpy(str1,".dat");
    strcpy(plDat,player);
    strcat(plDat,str1);
}
schade eigentlich dass man die länge einschränken muss.
danke für eure hinweise

--

ich denke mal, es dauert nicht mehr allzulange, dann wird dein Nick sanft von unten rot angeleuchtet..
by WW
to iterate is human, to recurse, slow!

zum Seitenanfang zum Seitenende Profil || Suche
005
01.05.2004, 12:40
CN



hast du den post von voice überhaupt gelesen?
du brauchst platz für 5 chars weil am ende noch der 0-terminator kommt

übrigens macht das oben auch keinen sinn weil plDat nach aufruf der funktion nicht mehr verfügbar ist
(abgesehen davon dass die gesamte funktion eigentlich nur ein strcat() macht ..)

du kannst (und solltest) das auch dynamisch mit pointern machen (was ist zb wenn du "123456" als param übergibst .. dann is da kein platz mehr für ".dat"), dann musst du aber auch den speicher selbst zuweisen
deswegen sagte ich ja auch "guck dir noch mal pointer an", am besten noch mal im zusammenhang mit dynamischer speicherzuweisung

--


Dieser Beitrag wurde am 01.05.2004 um 12:58 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
01.05.2004, 12:45
[PE]Spin



char str1[4], das heisst str1[0] bis str1[3]... wenn du 0-4 willst musst du str1[5] schreiben.

achja: plDat sollte dann 15 elemente gross sein. 10 + 5 != 10

--

alternativuser ( www.opera.com & www.trillian.cc & www.photonplayer.org )
coder @ www.public-enemy.org


Dieser Beitrag wurde am 01.05.2004 um 12:47 von [PE]Spin bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
01.05.2004, 14:22
unleash



Zitat:
CN postete
hast du den post von voice überhaupt gelesen?
du brauchst platz für 5 chars weil am ende noch der 0-terminator kommt
Zitat:
unleash postete
0-4 oder?
ch[0] = '.'
ch[1] = 'd'
ch[2] = 'a'
ch[3] = 't'
ch[4] = '\0'
wo ist das problem?
steh ich jetzt hier aufn schlauch oder ihr?
weil mein programm funktioniert ja jetzt auch so

--

ich denke mal, es dauert nicht mehr allzulange, dann wird dein Nick sanft von unten rot angeleuchtet..
by WW
to iterate is human, to recurse, slow!

zum Seitenanfang zum Seitenende Profil || Suche
008
01.05.2004, 14:29
CN



Quellcode:char str1[4]; das ist das problem
da ist nur platz für
{'.', 'd', 'a', 't'}

0-4 sind bei mir 5 elemente (0 1 2 3 4), nicht 4

dein programm mag funktionieren aber .. die funktion nützt nichts
du speicherst ein paar werte zwischen und fuchtelst da rum aber im endeffekt wird einfach nur ".dat" an player gehängt, was du aber eh nicht nutzen kannst weil plDat nur lokal in der funktion verfügbar ist

--


Dieser Beitrag wurde am 01.05.2004 um 14:30 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
01.05.2004, 15:18
unleash



ich hab hier nicht die gesamte funktion drinne.
ich erstelle nachher noch eine datei mit diesem namen deshalb das ganze

--

ich denke mal, es dauert nicht mehr allzulange, dann wird dein Nick sanft von unten rot angeleuchtet..
by WW
to iterate is human, to recurse, slow!

zum Seitenanfang zum Seitenende Profil || Suche
010
01.05.2004, 16:00
[PE]Spin



nochmal:
ch[0] = '.' - eins
ch[1] = 'd' - zwei
ch[2] = 'a' - drei
ch[3] = 't' - vier
ch[4] = '\0' - fünf

--> ch[fünf] -> ch[5] -> in der eckigen klammer steht die anzahl elemente, nicht der index des letzten elements

--

alternativuser ( www.opera.com & www.trillian.cc & www.photonplayer.org )
coder @ www.public-enemy.org

zum Seitenanfang zum Seitenende Profil || Suche
011
01.05.2004, 17:10
CN



unleash was hat das damit zu tun dass du dafür keine extra funktion brauchst sondern strcat reicht

--

zum Seitenanfang zum Seitenende Profil || Suche
012
02.05.2004, 11:38
unleash



in der funktion mache ich das mit dem datei öffnen/schreiben.
das ist die aufgabe der funktion
aber da es viel code ist habe ich nur das betreffende kopiert

@spin ja das ist mir klar, war mir schon nach deinem erstem post klar. ursprünglich war ich nur der meinung man gibt nicht die anzahl der elemente an sondern den feldschlüssel bis zu dem es geht.

--

ich denke mal, es dauert nicht mehr allzulange, dann wird dein Nick sanft von unten rot angeleuchtet..
by WW
to iterate is human, to recurse, slow!

zum Seitenanfang zum Seitenende Profil || Suche
013
02.05.2004, 13:13
[PE]Spin



ok, sry... hat nach deiner antwort nicht so ausgesehen :)

--

alternativuser ( www.opera.com & www.trillian.cc & www.photonplayer.org )
coder @ www.public-enemy.org

zum Seitenanfang zum Seitenende Profil || Suche