• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

[C] Structs in Funktionen auslagern

Hammurapi

Macoun
Registriert
17.07.09
Beiträge
123
Hi

ich würde gerne mehrere structs in meinem C Programm in eine Funktion auslagern und per Funktionsaufruf in die int main() holen. Dabei will ich verschiedene Variablen (int, char) im struct abspeichern. Geht das? Was ich probiere, ich krieg immer irgendwelche Fehler.

Dies sind die structs:
Code:
	struct {						
		int v1; 
		char v2[4]; 
		char v3[4]; 
	} struct1 ;
	 v1 = 1;
	 strcpy(struct1.v2, "Bsp\0");
	 strcpy(struct1.v3, "Xsh\0");

	struct {						
		int v1; 
		char v2[4]; 
		char v3[4]; 
	} struct2 ;
	 v1 = 1;
	 strcpy(struct2.v2, "Bsp\0");
	 strcpy(struct2.v3, "Xsh\0");

Grüße!
 
Was soll das bedeuten?
Eine Kerneigenschaft der prozeduralen Programmierung ist, dass Datentypen und Funktionen getrennt sind.
Natürlich kannst Du aber einen Struct-Typ deklarieren und diesen z.B. zum Datenaustausch zwischen Funktionen verwenden.

ANSI-C ist nun nicht meine Sprache, aber wenn ich mich richtig erinnere, definierst Du Typen mit „typedef“.
Es gibt natürlich keinen Sinn, den Typ nur in der Definition einer lokalen Variablen implizit zu definieren – es sei denn, der Typ wird nur lokal benötigt.
 
Was willst du überhaupt machen? Ein struct ist sehr gut in den Header-Dateien aufgehoben.
 
Ich habe in meinem Programm an die 100 verschiedener structs. Dadurch wird der Code unübersichtlich und der struct soll weg aus der main(). Das mit dem Header werde ich mal abchecken, danke!

Dazu schreibe ich eine eigene Header-Datei, und include per #header.h, korrekt?
 
#include "header.h";

Und idealerweise packst du nicht alles in die Main, sondern Teilst dein Programm sinnvoll in mehrere C-Dateien + H-Dateien auf.
 
Oh, ja. Das include hab ich vergessen. Beim Blick auf den Code wäre mir das aber wohl aufgefallen;-) Jetzt muss ich erstmal den code sinnvoll zerlegen glaube ich... So dass in der main() nur noch Funktionsaufrufe stehen. Das wird ein Spass:-/
 
Kein großer Akt: Refactor benutzen.