struct und Benutzereingaben
-
Peacemaker 95 schrieb:
Danke für die schnelle Antwort...
werde ich gleich mal ausprobierenEs muss natürlich
scanf("%5s", eingabe);
heissen.
-
Peacemaker 95 schrieb:
Aber wie
#include <stdio.h> #include <string.h> #include <locale.h> typedef struct { char* symbol; char* name; int protonen; double atommasse; }Element; char* remlf ( char* buf ) // remove linefeed ('\n' Zeichen auf 0 setzen ) { char* p = strrchr ( buf, '\n' ); if ( p != NULL ) *p = 0; return p; } int main() { unsigned i, run = 1; Element e[] = { { "H", "Wasserstoff", 1, 1.01 }, { "He", "Helium", 2, 4 }, { "Li", "Lithium", 3, 6.94 }, { NULL, NULL, 0, 0 } }; char buf[512] = {0}; setlocale ( LC_ALL, "German" ); // Wir wollen Umlaute sehen. puts ( "Über welches Element wollen sie mehr Informationen(Beenden mit Eingabetaste)?" ); // Elemente können nicht reden :D // Beim Drücken der Eingabetaste, ohne weitere Eingaben, speichert fgets das '\n' an // die erste Position im Puffer und bewirkt einen Abbruch der while Schleife, // indem die Variable run = 0 gesetzt wird. do { printf ( "Ihre Eingabe: " ); // buf ist bereits die Adresse des Puffers. fgets ( buf, sizeof ( buf ), stdin ); if ( buf[0] == '\n' ) run = 0; // Benutzer beendet das Programm. // fgets speichert ein '\n' am Ende des Puffers, das '\n' wird entfernt. remlf ( buf ); for ( i = 0; run != 0 && e[i].symbol != NULL; i++ ) { // stricmp: Groß-/ Kleinschreibung nicht beachten. if ( 0 == stricmp ( e[i].symbol, buf ) || 0 == stricmp ( e[i].name, buf )) { printf ( "%s\nProtonen: %d\nAtommasse: %.2lf\n", e[i].name, e[i].protonen, e[i].atommasse ); break; // Das Element wurde gefunden, Abbruch der for Schleife. } } if ( e[i].symbol == NULL ) printf ( "%s wurde nicht gefunden.\n", buf ); }while ( run ); return 0; }
-
Und wie würde ich dann den Code von Wutz
in drei Modulen schreibenAlso 1 Header, 1 C für main und 1 C für Unterprogramme
Ich habe dann nämlich Probleme den Zeiger *suche zu übergeben.
-
Peacemaker 95 schrieb:
Und wie würde ich dann den Code von Wutz
in drei Modulen schreibenAlso 1 Header, 1 C für main und 1 C für Unterprogramme
Ich habe dann nämlich Probleme den Zeiger *suche zu übergeben.
Hat denn keiner eine Lösung für mein Problem?
Wie kann ich den Zeiger (*suche) in andere Funktionen übergeben?:schland: :schland:
-
Das Geschenk ist geliefert, einpacken musst du es schon selbst.
-
Wutz schrieb:
Das Geschenk ist geliefert, einpacken musst du es schon selbst.
Nö, muß er ja nicht wirklich, solange hier Dödel der Farbe des Geschenkpapiers hinterherhecheln - lila oder silber, wird alles gemacht und frei Haus an die Omi geschmissen.
-
pointercrash() schrieb:
Wutz schrieb:
Das Geschenk ist geliefert, einpacken musst du es schon selbst.
Nö, muß er ja nicht wirklich, solange hier Dödel der Farbe des Geschenkpapiers hinterherhecheln - lila oder silber, wird alles gemacht und frei Haus an die Omi geschmissen.
ist doch schön, dann freut sich omi
-
omafan schrieb:
pointercrash() schrieb:
Wutz schrieb:
Das Geschenk ist geliefert, einpacken musst du es schon selbst.
Nö, muß er ja nicht wirklich, solange hier Dödel der Farbe des Geschenkpapiers hinterherhecheln - lila oder silber, wird alles gemacht und frei Haus an die Omi geschmissen.
ist doch schön, dann freut sich omi
eben.
es gibt hier nun mal leider internethobbydidakten, volldeppen, die nicht mal einer alten oma das geschenkpapier gönnen
-
omafreude schrieb:
eben.
es gibt hier nun mal leider internethobbydidakten, volldeppen, die nicht mal einer alten oma das geschenkpapier gönnenWooow !!!
-
Hallo,
Ich habe mich jetzt ein bisschen informiert und habe die Lösung gefunden.
Alerdings habe ich jetzt ein neues Problem:Das ist ein kleiner Teil von meinem Code bei dem das Problem auftaucht:
// main.c #include <stdio.h> #include <stdlib.h> #include "Elemente.h" #include "Elementeninfo.h" int main() { Elementeninfo_ausgeben(&Elemente); return 0; } // Elemente.h #ifndef ELEMENTE_H_INCLUDED #define ELEMENTE_H_INCLUDED typdef struct { char[3] Symbol; char[15] Name; // ... }struct_Elemente; struct_Elemente Elemente[] = { { "H", "Wasserstoff"}, { "He", "Helium"}, // ... } // Elementeninfo.h #ifndef ELEMENTENINFO_H_INCLUDED #define ELEMENTENINFO_H_INCLUDED #include "Elemente.h" void Elementeninfo_ausgeben(struct_Elemente*); #endif // Elementeninfo.c #include <stdio.h> #include "Elementeninfo.h" void Elementeninfo_ausgeben(struct_Elemente *Element) { printf("Symbol: %s\nName: %s", Element[0].Symbol, Element[0].Name); }
Und da bekomme ich die Fehlermeldungen:
[...]main.c|13|multiple definition of `_Elemente'|
[...]Elemente.c|8|first defined here|Ich habe bei Google irgendwas über extern gelesen und dann auch ausprobiert.. hat aber nicht geklappt. Vll war mein extern ja auch einfach an der falschen
Stelle.Wenn einer von euch die Lösung kennt wär das echt toll...
Schonmal danke
Peacemaker 95
-
Dieser Teil
struct_Elemente Elemente[] = { { "H", "Wasserstoff"}, { "He", "Helium"}, // ... }
verursacht das Problem. Lager das mal in eine c Datei aus.
-
Danke jetzt geht es