falsche Formatzeichenfolge verwendet, die Sie benötigen %fnicht %s
– Grijesh Chauhan
28. Oktober 2013 um 17:51 Uhr
Versuchen int main(int argc, char *argv[]).
– Beta
28. Oktober 2013 um 17:52 Uhr
Schalten Sie auch Ihre Compiler-Warnmeldungen ein, sie hätten Ihnen viele Dinge mitgeteilt.
– Charlie Burns
28. Oktober 2013 um 17:57 Uhr
Erich Finn
„Segmentierungsfehler“ bedeutet, dass Sie versucht haben, auf Speicher zuzugreifen, auf den Sie keinen Zugriff haben.
Das erste Problem ist mit Ihren Argumenten von main. Das main Funktion sein soll int main(int argc, char *argv[])und das sollten Sie überprüfen argc vor dem Zugriff mindestens 2 ist argv[1].
Auch da gehst du in a vorbei float zu printf (was übrigens in a umgewandelt wird double beim Übergang zu printf), sollten Sie die verwenden %f Formatbezeichner. Das %s Formatbezeichner ist für Zeichenfolgen ('\0'-terminierte Zeichen-Arrays).
Mir wurde beigebracht, dass es sein sollte int main(int argc, char** argv) Anstatt von int main(int argc, char *argv[]). Obwohl die Art und Weise, wie Sie es ausdrücken, korrekt ist, ist ‘char**’ die eigentlich ‘richtige’ Art, dies zu tun, da es einen Zeiger auf einen Zeiger auf ein Zeichen darstellt.
– Willothy
13. Juli 2017 um 22:44 Uhr
@WillHopkins Der Standard sagt das int main(void) und int main(int argc, char *argv[]) oder Äquivalent sind akzeptabel, wobei die Fußnote nach „Äquivalent“ lautet: „So, int kann durch einen Typedef-Namen ersetzt werden, der als definiert ist intoder die Art von argv kann geschrieben werden als char ** argvund so weiter.“ Also wirklich eine Frage des Stils. (siehe 5.1.2.2.1 Programmstart)
– Eric Finn
13. Juli 2017 um 22:52 Uhr
Ja, ich dachte nur, ich erwähne es, weil ich das benutze 🙂
– Willothy
13. Juli 2017 um 22:54 Uhr
Könnten Sie bitte etwas mehr entwickeln “und Sie sollten überprüfen, ob argc mindestens 2 ist, bevor Sie auf argv zugreifen[1]” um mir zu helfen zu verstehen, was es bedeutet? Danke!
– Ni-Ar
18. August 2021 um 10:22 Uhr
@Ni-Ar argc ist, wie viele Werte enthalten sind argv. Also bevor du irgendwas mit machst argv[1]müssen Sie sicherstellen argc >= 2
– Eric Finn
19. August 2021 um 13:34 Uhr
14243600cookie-checkWas ist ein Segmentierungsfehler (Core Dump)? [duplicate]yes
en.wikipedia.org/wiki/Core_dump
– Amir Afghani
28. Oktober 2013 um 17:48 Uhr
falsche Formatzeichenfolge verwendet, die Sie benötigen
%f
nicht%s
– Grijesh Chauhan
28. Oktober 2013 um 17:51 Uhr
Versuchen
int main(int argc, char *argv[])
.– Beta
28. Oktober 2013 um 17:52 Uhr
Schalten Sie auch Ihre Compiler-Warnmeldungen ein, sie hätten Ihnen viele Dinge mitgeteilt.
– Charlie Burns
28. Oktober 2013 um 17:57 Uhr