» Wo liegt der Fehler bzw. kann mir jemand helfen?

Scanf ProblemNeuen Thread eröffnenNeue Antwort erstellenZahlen, Zeichen und Buchstaben einscannen
AutorNachricht
Beobachter 
Anmeldedatum: 02.06.2022
Beiträge: 2
02.06.2022, 15:20
zitieren

Kann mir jemand sagen wo der Fehler in diesem Code liegt und wie ich diesen lösen kann. Freu mich auf jede Hilfe. :yes:
[code]#include <stdio.h>

typedef struct numberItem {
int value;
struct numberItem* next;
} numberItem;


void appendNumberItem(numberItem** start, int value)
{
numberItem* neu = (numberItem*)malloc(sizeof(numberItem));
if (neu == NULL)
{

}
neu->value = value;

if (*start == NULL)
{
neu->next = NULL;
start = neu;
}
else
{
numberItem
ptr = start;
while (ptr->next != NULL)
{
ptr = ptr->next;
}
ptr->next = neu;
neu->next = NULL;
return &ptr;
}

}


int main()
{
numberItem
root = NULL;
appendNumberItem(&root, 42);
appendNumberItem(&root, 1);
appendNumberItem(&root, 2);
appendNumberItem(&root, 3);
return 0;
}


 Hier nochmal der Code als Bild

Screenshot (45).png
Screenshot (45).png - [Bild vergrößern]


pn
Trainee 

Name: Mirko
Geschlecht:
Anmeldedatum: 06.12.2019
Beiträge: 46
Wohnort: Weingarten
05.06.2022, 07:31
zitieren

Hi Ropeck,

kann es sein, dass Du mit folgender Lektüre lernst?
Verkette Listen in C

Alleine die Tatsache, dass Du aus einer void-Funktion eine Adresse zurückgeben möchtest zeigt, dass Du das Thema noch nicht richtig verinnerlicht hast. Das ist wirklich nicht böse gemeint.
Breche deinen Code noch einmal etwas herunter und schau Dir das Thema Zeiger noch einmal genau an bevor Du dich an verkette Listen machst.
Außerdem solltest Du nicht andere danach fragen, wo der Fehler liegt. Du lernst mehr, wenn Du es selber herausfindest. Deinem Code zurfolge jedoch, fehlt Dir einfach noch das I-Tüpfelchen beim Thema zeiger.

Also viel Spaß dabei. Wobei ich davon überzeugt bin, dass Du dir bereits in anderen Foren hast längst helfen lassen. Auch gut... ;)

Grüße und schöne Pfingstfeiertage.


pn
Beobachter 
Anmeldedatum: 02.06.2022
Beiträge: 2
07.06.2022, 21:07
zitieren

Ne ich hab mir keine Hilfe auf anderen Foren gesucht :D Ich habe es allein gelöst, was natürlich viel Zeit gekostet hat. Doch nun stehe ich vor einem anderen Problem bei einer anderen Aufgabe... Vllt. kannst du mir ja da ein paar Tipps geben, weil da bin ich wirklich einfach überfragt.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct customer{
char vorname[20];
char name[20];
int kundennummer;
struct customer * next;
}customer;

customer * anker = NULL;

customer* createCustomer(int zahl, char* vorname, char* name)
{
customer * neu = (customer*)malloc(sizeof(customer));
if(neu==NULL)
{
exit(-1);
}

strcpy(neu->vorname, vorname);
strcpy(neu->name, name);
neu->kundennummer = zahl;


neu->next = anker;
anker = neu;

return anker;
}

void addCustomer(customer* root, customer* neuKunde)
{
customer * neu = (customer*)malloc(sizeof(customer));
if(neu==NULL)
{
exit(-1);
}
}

int customerCount(customer* root)
{
int count=0;
customer * ptr = anker;
while(ptr!=NULL)
{
ptr = ptr->next;
count++;
}
return count;
}


int main(int argc, char* argv[]) {
customer *root = NULL;
root = createCustomer(1, "Hans", "Maurer");
printf("%d %s %s\n", root->kundennummer, root->vorname, root->name);
addCustomer(root, createCustomer(3, "Tatjana", "Roth"));
addCustomer(root, createCustomer(2, "Anna-Maria", "Schmidt"));
return 0;
}

Mein Problem ist was genau "root = createCustomer(1, "Hans", "Maurer");" für einen Wert erhalten soll. Stimmt "return anker"? Wenn nein kannst mir Tipps geben?


pn
Trainee 

Name: Mirko
Geschlecht:
Anmeldedatum: 06.12.2019
Beiträge: 46
Wohnort: Weingarten
09.06.2022, 13:42
zitieren

Hi,

leider verstehe ich die Frage nicht. Die Funktion createCustomer(...) hat genau die Werte zu erhalten, die Du für sie definiert hast.
Ich kann Dir den Tipp geben, dass Du solche globalen Variablen wie "anker" tunlichst vermeiden solltest. Auch generell sollte man globale Variablen vermeiden. Hierzu empfehle ich entweder Videos auf Youtube oder entsprechende Lektüre, die den "Stack" ausführlich behandeln.

Außerdem würde ich empfehlen eine Funktion "createList" anstelle von "createCustomer" zu erstellen und dann mit der Funktion "addCustomer" Daten der Liste zuzuführen. Oder Du erstellt am einfachsten die Liste gleich in der main-Funktion, da diese Liste sowieso immer und sofort nach Programmstart vorhanden sein muss.
Auf die Art sparst Du dir die globale Variable. Die Funktion "createList" gibt einfach einen Zeiger (bzw. Speicheradresse) im Heap zurück, an der man dann den ersten Datensatz einfügt. (Besser gesagt, der dann auf den ersten Datensatz zeigt...)

Vielleicht konnte ich etwas helfen.
Grüße in die Runde


pn
Gast 
09.06.2022, 13:42
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Wo liegt der Fehler bzw. kann mir jemand helfen?" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
VSA Fehler!!! Wer kann mir helfen?
VSA geht nicht mehr aus, war heute in einer freien werkstatt auslesen-Bremsdrucksensor defekt- kennt jemand das teil-mein honda händler will es nicht...
von mikai
36
3.743
06.08.2023, 13:47
HondaCRV07
fehler 7 beim ee8 wer kann helfen
habe fehlercode 7 in meinen b16 a ist wie ich weis der drosselklappenpoti...habe aber die drosselklappe mit poti gewechselt und fehler ist noch da....habe sicherungen gezogen usw...was kann es noch sein...mir geht langsam der rat aus....diese blöde gelbe...
von BLueEDHro
0
212
24.07.2011, 18:32
BLueEDHro
kann mir jemand helfen?
Ich habe ein rätsel aufbekommen. nur leider habe ich nicht den hauch einer ahnung was das zu bedeuten hat. vlt kann mir hier wer weiter helfen. was bedeutet das?: Dieses Programm benutzt die Zahlen Null, Eins, Zwei, Fuenf, ...
[Allgemein]von Noisepoint
0
470
19.09.2011, 20:57
Noisepoint
Hey kann mir jemand helfen
Hey leute könnt ihr mir helfen ich brauchte mal eure Hilfe wo ist beim Honda Civic Bj.98 die Durchgangsbohrung für das Pluskabel für die endstufe wenns geht schnell...
von *Balla*
12
536
26.07.2009, 07:58
Fräänkyy
kann mir jemand helfen
ich fahre honda legend , jetzt habe ich volgendes problem der knalt immer das sicherung für die kraftstoffpumpe duch woran kann es liegen kann mir jemand sagen? danke im...
von sergej83
4
281
16.02.2009, 23:01
Holly71
Kann mir jemand Helfen???
Bekomme angeblich mein Motor und Bremse eingetragen wenn!!!- ich einen "Übereinstimungsbescheinigung" vor lege. Das heißt ich muss belegen dass die Bremsanlage für den Motor ausreicht. Ich habe ein ED6 den ich mit ED9-Motor versüsst habe die Bremse sind...
von ED&ED
2
690
01.10.2005, 16:48
CheGuivera
Kann mir jemand helfen?
Hallo! ich haben ein/mehrere probleme mit meinem Civic Ej9 und zwar: wenn ich morgens in mein Auto einsteig geht er nicht an Anlasser macht aber Geräusche und dann muss ich ihn so lang quälen dauert so 5 min und dann geht er endlich an! wenn ich...
von civicEj9-
10
489
12.12.2011, 21:34
civicEj9-
Kann mir jemand helfen
:wall: Ich habe mir einen Mohr ESd 2x90 gekauft mit Halterung für meinen CRX del sol Bj.92 Nun wie kommen die Halterungenrichtig an die Karosse??? :?: Grüßle...
von sandysol
17
749
14.04.2006, 19:02
sandysol
Kann mir ma jemand helfen ??
Hab auf mein Civic kein TÜV bekommen :( Ein paar von euch kennen ihn ja schon.. Ich will den jetzt nur noch los haben... Weis allerdings noch nicht genau wie ich es mach, weil ich noch ne 125er von Honda hab, ne NSR, die soll auch mit...
von Silver_Civic_EJ6
12
564
11.04.2011, 17:51
Silver_Civic_EJ6
Kann mir jemand helfen? Grafikmäßig
http://www.maxrev.de/ftopic6813.htm Danke...
von Spumm2001
0
783
27.10.2005, 10:00
Spumm2001
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |