Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

C: Stuct in Verbindung mit einer Feldausgabe
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> C: Stuct in Verbindung mit einer Feldausgabe
 
Autor Nachricht
TobiKausNOH
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 11.01.2007
Beiträge: 60

BeitragVerfasst am: 07 Sep 2008 - 21:00:24    Titel: C: Stuct in Verbindung mit einer Feldausgabe

bei dem folgendem programm gibt er ein zeichen nicht aus. die sich auf reihe.feld[5] bezieht (innerhalb der do-schleife).
wäre echt nett, wenn man mir helfen könnte.
Besten Dank

//Feld mit struct
#include <stdio.h>
#include <stdlib.h>
struct {
char feld [5];}reihe;
main()
{
reihe.feld[5] = 'a' , 'b' , 'c' , 'd' , '\0';
int i = 0;

do{
printf("I ist %d und die schleife beginnt!!\n", i);
printf("%c \n\n",reihe.feld[i] ); // die zeichen gibt er nicht aus!!
i++;
}while(i<5);

system("pause");
return 0;
}
Smutje
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 18.07.2008
Beiträge: 3004
Wohnort: Gießen

BeitragVerfasst am: 07 Sep 2008 - 21:17:17    Titel: Re: C: Stuct in Verbindung mit einer Feldausgabe

Code:
reihe.feld[5] = 'a' , 'b' , 'c' , 'd' , '\0';


befüllt mitnichten das feld "feld" mit den angegebenen werten, sondern führt die anweisungen gemäß des "komma-operator" aus, d.h. alle ausdrücke hinter "=" werden ausgewertet und der letzte wert ('\0') in den speicherbereich links vom "=" geschrieben. richtig wäre es in etwa so (ungetestet):

Code:
reihe.feld[5] = {'a' , 'b' , 'c' , 'd' , '\0'};
TobiKausNOH
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 11.01.2007
Beiträge: 60

BeitragVerfasst am: 07 Sep 2008 - 21:45:39    Titel:

habe die folgenden sachen angelegt.
aber auf ein richtiges ergebnis komme ich nicht.
der compiler zeigt mir die folgenden befehle als fehler:

//reihe.feld [5] = {'a','b','c','d','\0'};
//reihe.feld [5] = {abcd};
reihe.feld [5] = "abcd";
Jockelx
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 24.06.2005
Beiträge: 3596

BeitragVerfasst am: 07 Sep 2008 - 22:47:39    Titel:

Nee, so kann man kein Feld zuweisen. Google mal nach 'strcpy'.

Irgendwie sowas:

strcpy(reihe.feld, "abcd");
MarkusLe
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 21.06.2007
Beiträge: 258

BeitragVerfasst am: 07 Sep 2008 - 23:00:38    Titel:

reihe.feld [5] = "abcd"; <-- geht nicht, da Du versuchst dem char bei index 5 einen Stringwert zuzuweisen, zum Glück Meckert der Compiler, zumal index 5 nichtmal exestiert und Du damit einfachmal in den Speicher hinter Deiner Struct schreiben würdest.

Versuchs mal mit:
reihe.feld = (char*)"abcd"

falls das nicht klappt änder
char feld [5]

in

char feld*

und mach dann die Zuweisung:
reihe.feld = "abcd"
TobiKausNOH
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 11.01.2007
Beiträge: 60

BeitragVerfasst am: 08 Sep 2008 - 07:16:24    Titel:

das hat mit strcpy geklappt! und der dazugehörigen bibio string.h

vielen vielen dank!
antiranker
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 05.08.2008
Beiträge: 590

BeitragVerfasst am: 08 Sep 2008 - 07:53:15    Titel:

auf deine art hätte es funktioniert, hättest du

reihe.feld [] = {'a','b','c','d','\0'}; gemacht...
glaub ich zumindest^^
Jockelx
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 24.06.2005
Beiträge: 3596

BeitragVerfasst am: 08 Sep 2008 - 15:17:21    Titel:

Glaub ich nicht Wink
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> C: Stuct in Verbindung mit einer Feldausgabe
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum