2d int feld in einer struktur

OP #6162107
Lesenswert?

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 #6162127
Lesenswert?

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
#6162185
Lesenswert?

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
    };

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren