• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

[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.