Problem
-
Ich hoffe das es das richtige Forum ist.Ich bin nähmlich neu hier.
Ich hab nen Problem mit einem Programm und zwar ist immer ein Fehler drin die meldung Lautet: install.c: undefined reference to `fertig'
Ich weis das es was mit dem "int main" zu tun hat.Ich habe main,Main,fertig.
Ich weiß leider nich woran es liegt.
-
wie heißt das ding, wo kann man es sich runterladen?
meine kristallkugel ist vom vielen raten ziemlich trüb geworden und is grad in reparatur. sorry dass ich nicht besser helfen kann.
-
Den Qeltext?
#include <stdio.h>
#include <conio.h>void Main();
void fertig();int main()
{
int a;printf("Wollen sie das Instalation programm ausfhren?\n1 Ja oder 2 Nein\nBitte Zahl eingeben:");
scanf("%d",&a);
if (a==1)
{
Main();
}
else
printf("Installation abgebrochen!");
getch();
}void Main()
{
FILEdatei;
datei=fopen("**.txt","w+");
fprintf(datei,"-------------------------------------------");
fertig();
}
void fertig()
{
FILEdatei;
datei=fopen(".txt","w+");
fprintf(datei, "Willkommen beim ** Programm.\nBitte schreiben sie an mir falls Fehler\nauftreten sollten.\nEmail:\nDanke.");
printf("Komponenten werden installiert.\n");
printf("Fertig!");
getch();
}leider ist er ein bisschen verrück hier im Forum.
Hoffe das war es was du meinst.
-
Hinter der } von der Main()-Funktion ist irgendein komisches Zeichen was da nicht hingehört (man sieht es gar nicht so, aber im Quelltext ist es). Mach das weg und es geht.
-
Danke klappt jetzt.
-
Irgendwie hab ich nur Fehler.Compillieren geht ausführen auch aber
Wenn man Nein also 2 tippt geht das programm einfach aus obwohl er
eigentlich noch auf eine Text eingabe warten soll.
Weiß jemand rat?
gier derprintf("Wollen sie das Instalation programm ausfhren?\n1 Ja oder 2 Nein\nBitte Zahl eingeben:");
scanf("%d",&a);
if (a==1)
{
Main();
}Hier(V) ist das Problem ich weiss nur nicht welches.
else
printf("Installation abgebrochen!");
getch();}
-
Hi, ich hab dir zwei tips:
1. Ist der Name main reserviert, also taufe deine "void Main" funktion um.
2. Ist deine main funktion nichtvoid main(){}
sondern
int main(){}
wie du richtig geschrieben hast, aber dann musst du auch integer zurückgeben, also so
getch() return 0; }
Gruss
-
Das problem ist alles in der main.Es ja der qelltext von oben und zwar
int main()
{
int a;printf("Wollen sie das Instalation programm ausfhren?\n1 Ja oder 2 Nein\nBitte Zahl eingeben:");
scanf("%d",&a);
if (a==1)
{
Main();
}
else
printf("Installation abgebrochen!");
getch();
return 0;
}und eben das klappt nicht.Leider auch nicht mit return 0;.
Er gibt nicht das aus von else.
-
Also ich hab dein Programm mal ein bisschen geaendert. Jetzt funktioniert es.
#include <stdio.h> void fertig() { FILE* datei1; datei1=fopen("hallo.txt","w+"); fprintf(datei1, "Willkommen beim Programm.\nBitte schreiben sie an mir fall Fehler\nauftreten sollten.\nEmail: ** \nDanke."); close(datei1); printf("Komponenten werden installiert.\n"); printf("Fertig!\n"); } void myMain() { FILE* datei; datei=fopen("hallo.txt","w+"); fprintf(datei,"-------------------------------------------"); fclose(datei); fertig(); } int main() { int a; printf("Wollen sie das Instalation programm ausfuehren?\n1 Ja oder 2 Nein\n"); scanf("%d",&a); if (a==1) { myMain(); } else printf("Installation abgebrochen!\n"); return 0; }
Wieso hast du 2 Dateien geoeffnet, und die beiden Pointer gleich benannt?
Naja ich hab jedenfalls einen umgenannt, und nach den hineinschreiben geschlossen.
So funktioniert das, und sieht auch noch ganz gut aus.mfg LastManStanding
-
Wenn man nein sagt zeig er aber nicht "Installation abgebrochen!".
Das ist das Problem.Und ich hab jetzt noch ein anderes problem bemerkt und zwar:
Der wenn man etwas addieren will heiß es doch so:a+b;
oder
b=c+aAufjeden fall das krig ich auch nicht hin. Er sagt einfach das über der linie ein Fehler ist.Da steht nun mal eins von den beiden.Auch mit der ausgabe hab ich nen Problem da sagt er mir ich hätte nicht die variable a dementsprechend mit int eingebaut.
Uff irgendwie will mich der Compiler ärgern.
-
Also das was ich oben hingeschrieben habe funktioniert wunderbar!
Auch das "Installation abgebrochen!" wird angezeigt.Mit was kompilierst du?
Ich hab's mit Suse Linux 9.1 un gcc 3.3.3 probiert...
mfg LastManStanding
-
Ich kompiliere unter windows mit Dev-C++.
Und unter Linux(dieses prog ist aber unter windows)mit Kdevelop.Hier mit dem addieren da sagt er das: parse error before `else'
also wenn ich das richtig verstehe ist über else was falsch.d = d + c;
elsees ist in void main.Inzwischen hab ich alle Bibliotheken die ich kenne ein gebaut.
d und c sind declariert mit int.c=1 und d=0
-
man kann beim addieren auch so schreiben:
a+=d;
das selbe wie
a = a + d;
das geht auch bei *...
a /= d;
usw.
es waere auch super waenn due die if verzweigug IMMER so schreiben würdestif(irgendwas){ //irgendein wichtiger code }else{//else zu: (irgendwas) //noch ein wichtiger code }//end if
also ich meinen mit den klammern so vermeidest du fehler als waenn du schreibst
if(irgendwas) //irgendein wichtiger code NUR EINE ZEILE LANG else//else zu: (irgendwas) //noch ein wichtiger code NUR EINE ZEILE LANG
fide ich zumindest
-
das ist das problem.
Danke
-
ansonsten darf vor else kein Semikolon stehen
-
if (bedingung) einefunktion(); else einefunktion(); if (bedingung) { einefunktion(); nocheinefunktion(); } else { einefunktion(); nocheinefunktion(); }
-
Endlich gelöst!
mfg LastManStanding
Uebrigens: Hab gerade meine Version in Dev-C++ getestet. Laeuft genauso!
-
@c.rackwitz find ich nicht so gut den stil find ich irgedwie unübersichtlich
-
stil? mir egal.
die möglichkeiten gibt es jedenfalls. naja, man kann noch mischen aber ich wollts nur zeigen.Mahlzeit hat da irgendwas von nicht-semikolon vor dem else gesagt und mir war das unklar.
-
ja das mit dem das kann man mischen stimme ich dir vollkommen zu aber stil ist -finde ich- ziemlich wichtig