Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Opgelost][C++] Segmentatiefout, maar programma werkt wel mét argumenten  (gelezen 2091 keer)

Beste medeprogrammeurs,

ik werk voor de lol aan een C++-programma dat een paar dingen kan doen met de Rij van Fibonacci, namelijk:
-controleren of twee opeenvolgende getallen in een reeks Fibonaccigetallen zijn;
-de rij van Fibonacci tot een x aantal getallen weergeven.

Het programma werkt foutloos met commandline-argumenten, maar wanneer ik het programma probeer uit te voeren zonder argumenten krijg ik een segmentatiefout toegespeeld, ondanks dat daar in mijn programma rekening mee wordt gehouden.

Ik heb op verschillende gelezen dat het programma bij een segmentatiefout geheugen probeert te bereiken of aan te passen dat het niet mág aanpassen. Ik zie in mijn code echter
geen oorzaak van dit probleem. Kan iemand mij verder helpen? De broncode staat op Ubuntu Pastebin: http://pastebin.ubuntu.com/463385/

Alvast bedankt.
Stefan de Vries

« Laatst bewerkt op: 2010/07/14, 11:15:00 door SteefuitHeerlen »
Bezoek ook eens de Ubuntu NL IRC-kanalen! |

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: [C++] Segmentatiefout, maar programma werkt wel mét argumenten
« Reactie #1 Gepost op: 2010/07/14, 11:07:37 »
Je probeert strcmp() uit te voeren op argv[1] terwijl argv[1] niet bestaat indien er geen parameter wordt meegegeven
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Re: [C++] Segmentatiefout, maar programma werkt wel mét argumenten
« Reactie #2 Gepost op: 2010/07/14, 11:14:38 »
Ik laat main.cpp nu eerst "kijken" naar het aantal argumenten. Als dat 1 is, dus enkel de naam van het uitvoerbare bestand, geeft het programma een foutmelding en "returnt" een 0.
Zo dus:
int main(int argc, char* argv []){
if(argc == 1){
cout << "This program requires arguments. Try FCli -h to see which ones you can use.\n";
return 0;
}


Dank je voor je snelle reactie, profoX. Het werkt!  :)

Stefan

Edit
De uiteindelijke broncode kan gedownload worden via http://techsite.comeze.com/FCli.html
« Laatst bewerkt op: 2010/07/14, 12:32:13 door SteefuitHeerlen »
Bezoek ook eens de Ubuntu NL IRC-kanalen! |

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Hey, de konijntjes van Fibonacci!

Hier een recursieve functie om te zien hoeveel konijntje je hebt na n maanden :P.
long fib(int n) {
    if (n == 0 || n == 1) {
      return n;
    } else {
      return fib(n - 1) + fib(n - 2);
    }
}
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Hier heb je een expliciete functie:

Code: (C++) [Selecteer]
long fib(int n) {
   float phi = (1.0f + std::sqrt(5))/2.0f
   return long((std::pow(phi,n)-std::pow((1-phi),n))/sqrt(5))
}
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net