Probleme mit atoi(argv[1]) und free(a)
-
Wie rufst du das kompilierte Programm auf?
-
Habe es in eclipse und im terminal(grad eben) ausgeführt. In beiden Fällen zeigt er "Bitte geben sie die Dimension ein" an und beendet sich danach, auf der Konsole zusätzlich Speicherzugriffsfehler an.
Muss er den Parameter nicht von der Kommandozeile lesen, wird das Programm fehlerfrei ausgeführt
-
Das argv ist für Parameter von der Kommandozeile gedacht:
C:>matrixmul 3
Wenn du den Wert im Programm eingeben willst nimm statt
n = 3;//atoi(argv[1]);
scanf("%d",&n);
-
Danke mit scanf() funktionierts, in meiner aufgabenstellung ist aber explizit gefordert, dass ich mit atoi(argv[1]) den Parameter einlese
-
Das liegt daran, dass du keinen Komandozeilenparameter angibts. Denkst du Eclipse macht das automatisch fuer dich? Siehe DirkB.
-
wie gesagt, kenne mich nicht aus und weis daher nicht wie ich einen Kommandozeilen Parameter richtig anlege.
Ich arbeite auch erst seit kurzer Zeit mit LinuxMuss ich das irgendwie im Quelltext mit angeben oder bevor ich das Programm starte???
-
Nimm den Beitrag von dirkb:
DirkB schrieb:
Das argv ist für Parameter von der Kommandozeile gedacht:
C:>matrixmul 3
Oder unter Linux von der Shell aus dort wo das übersetzte Programm liegt ./matrixmul 3
Weiterhin beachte meinen Beitrag:
LordJaxom schrieb:
Schau mal, wieviele double* Du in Zeile 11 reservierst und vergleiche mit der Anzahl der Werte, die Du in der darauffolgenden Schleife in das Array reinpacken möchtest.
-
OK hab gefressen: <Pfad>/<Dateiname> <Parameter> // natürliche ohne < >
Es gibt keine andere Möglichkeit, mit atoi, dass er zuerst "Bitte geben sie die Dimension ein" ausgibt und dann der Parameter eingegeben wird,außer mit scanf(), oder???
-
Du kannst mit argc prüfen, wie viele Parameter übergeben wurden. Wenn weniger als 2 Übergeben werden (der erste ist der Programmname) gibst du halt einen Hilfetext aus ("usage: matrixmul <matrixsize>") oder fragst mit scanf nach.
-
Sollst du atoi() und argv[1] nehmen oder nur atoi()?