2d int feld in einer struktur

OP #6162107
Hallo, ich möchte ein Feld in einem struct erstellen. nun funktioniert 
dies leider nicht. kann mir jemad helfen oder hat ne Idee wie es 
funktionieren könnte ?
MFG Cedric
1
typedef struct
2
{
3
  int spielfeld[3][3];
4
}tic_tac_toe;
5

6
int main()
7
{
8
  tic_tac_toe feld1;
9
  feld1.spielfeld= { {1,1,1},{0,0,0},{2,1,0} };  
10
}
Gast
Cedric D. schrieb:
> Hallo, ich möchte ein Feld in einem struct erstellen. nun funktioniert
> dies leider nicht.

Danke fuer die ausfuehrliche Fehlermeldung "funktioniert nicht".
Du hast die Fehlermeldng "error: assigning to an array from an 
initializer list" sicher bei Google eingeworfen. Da kommt als erstes: 
"You cannot assign directly to an array after its declaration." - noch 
in der Uberschrift.

Also
1
#include <stdio.h>
2
  int spielfeld[3][3]= { {1,1,1},{0,0,0},{2,1,0} };  ;
3

4
int main()
5
{
6
  printf("2,1=%d\n", spielfeld[2][1]);
7
}

Init in der Deklaration und gut ist.

leo
Array kann man nicht zuweisen, es darf nicht auf der linken Seite von = 
stehen, alles andere darf dort stehen, das ist so weil... Gründe.

Probiers mal so:
1
    memcpy(feld1.spielfeld, (int[3][3]){{1,1,1},{0,0,0},{2,1,0}}, sizeof(int[3][3]));

Oder wenn Du das ganze struct in einem Rutsch mit Werten füllen willst 
dann geht das sehr elegant mit einem compound literal für das ganze 
struct, denn ein struct darf durchaus mit = zugewiesen werden:
1
    feld1 = (tic_tac_toe){
2
        .spielfeld = {{1,1,1},{0,0,0},{2,1,0}}
3
    };
Dirk B. schrieb:
> Bei der (reinen) Deklaration gibt es noch keinen Speicher, in den
> irgendwas abgelegt werden kann.

Er hat nirgendwo in dem Beispiel eine reine Deklaration, also verwirr 
ihn damit jetzt (noch) nicht. mit der Zeile

1
tic_tac_toe feld1;

ist der Speicher angelegt, denn das ist eine Definition, und er kann 
jetzt was reinschreiben.
Gast
Hallo, vielen Dank für die Hilfe, einen Arrey so zu deklarieren 
funktioniert bei mir auch, ich habe nur ein Problem damit dies in einer 
Struktur in diesem Fall tickdackto zu tun.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.