char in *char[] kopieren oder konvertieren
-
Das
&(blub[i].c)
liefert dir die Adresse des Elements c.
Da c schon einchar
ist brauchst du den cast nicht.Aber wofür braucht man ein Array einer
struct
, deren einziges Element einchar
ist?
-
hmm ok also es kann auch sein, dass ich etwas falsch mache...also ich habe folgendes gemacht
struct array *satz; satz = malloc(size*sizeof(char)); file = fopen (infile, "r" ); if (file==NULL) { fputs ("File error readfile2\n",stderr); exit(1); } fseek (file , 0 , SEEK_END); //Ursprung waehlen und zaehlen rewind (file); // "cursor" zurueck setzen satz[0].c = ' '; while ((d = fgetc(file)) != EOF) { satz[i].c = d; i++; } fclose (file); return satz; }
um eine datei ein zu lesen und diese als "array" ab zu speichern...vllt speichere ich einfach falsch ab?
-
OMG
Mach einfach statt
struct array *satz;
einchar *satz;
Lass das .c weg.Das fseek und rewind brauchst duauchnicht, ist schon mit
fopen(...,"r")
gemacht.Die Überprüfung auf i >= size fehlt noch.
Kapitel über Arrays und Strings nochmal lesen
-
anstelle eines OMG könntest du mir vielleicht sagen, was genau an dem Konstrukt falsch ist. Danke
-
Steht doch da.
Nimm ein einfaches Array von
char
Bzw lass satz ein Zeiger aufchar
sein.Du machst das viel zu kompliziert.
Und noch (mehrere) mal die C Grundlagen durchlesen.
-
hab es jetzt abgeändert und die methode liefert immer noch nicht die stelle i sondern die zeichen bis zur stelle i
-
Das hängt davon ab, was deine methode mit der Angabe von deinem
char *
macht.
char *
werden in C (auch) für Zeichenketten benutzt.
-
also ich hab einen stack implementiert und der soll meiner vorstellung nach nur ein char auf den "stack pushen...
[cpp]
struct stackelement
{
struct stackelement *previous;
char *zeichen;
};...
void Push(struct stack *s, char *ptr)
{
struct stackelement nse;
nse = (struct stackelement)malloc(sizeof(struct stackelement));
nse->previous = s->top;
nse->zeichen = ptr;
s->top = nse;
}
-
sorry hier nochmal in schön
struct stackelement { struct stackelement *previous; char *zeichen; }; ... void Push(struct stack *s, char *ptr) { struct stackelement *nse; nse = (struct stackelement*)malloc(sizeof(struct stackelement)); nse->previous = s->top; nse->zeichen = ptr; s->top = nse; }
-
sorry natürlich ich arbeite die ganze zeit mit adressen und nicht mit chars...habs geändert und es funktioniert jetzt...danke fürs Kopf rütteln