C - Error: comparison between pointer and integer
Hallo zusammen, ich habe folgenden Code:
Wenn ich mein Programm nur Kompilieren will, bekomme ich immer folgende Fehlermeldung:
Was muss ich an meinem Code ändern, um dieses Problem zu umgehen? Kann mir da jemand weiterhelfen?
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <stdio.h>
main(int argc, char *argv[]){
int i, wert_1=1, wert_2=1, tmp;
/*
wir fangen bei i=3 an, da die ersten
beiden durchläufe sowieso nur "1 paar" ergeben
wert_1 = anzahl der paare im letzten durchlauf
wert_2 = anzahl der paare im vorletzten durchlauf
*/
for(i=3; i <= argv[1]; i++) {
/* den wert aus dem letzten durclauf speichern wir temporär ab */
tmp = wert_1;
/*
den "letzten" wert ändern wir nun, in dem wir den "alten letzten"
und den vorletzten wert addieren
*/
wert_1 = (wert_1 + wert_2);
/*
der "neue vorletzte" wert ist nun der "alte letzte" wert
*/
wert_2 = tmp;
}
printf("In %s Zeiteinheiten wurden %d Paare gezeugt", argv[1], wert_1);
}
|
Wenn ich mein Programm nur Kompilieren will, bekomme ich immer folgende Fehlermeldung:
Ziel ist es, dass ich mein Programm mit einem Paramater starte (z.B. 10) und dann soll die for-Schleife dementsprechend durchlaufen.
Zitat
comparison between pointer and integer
Was muss ich an meinem Code ändern, um dieses Problem zu umgehen? Kann mir da jemand weiterhelfen?
Hi jazzdee,
du musst eigentlich nur die eckigen Klammer mit der 1, also [1] hinter argv in der schleife entfernen, da du damit nicht den kompletten übergebenen Wert überprüfst, sondern nur einen Teil des Strings.
Das führt dann aufgrund der Definition eines Strings als Char-Array zu diesem Fehler.
Gruß,
Thomas
du musst eigentlich nur die eckigen Klammer mit der 1, also [1] hinter argv in der schleife entfernen, da du damit nicht den kompletten übergebenen Wert überprüfst, sondern nur einen Teil des Strings.
Das führt dann aufgrund der Definition eines Strings als Char-Array zu diesem Fehler.
Gruß,
Thomas
Hi jazzdee,
du musst eigentlich nur die eckigen Klammer mit der 1, also [1] hinter argv in der schleife entfernen, da du damit nicht den kompletten übergebenen Wert überprüfst, sondern nur einen Teil des Strings.
Das führt dann aufgrund der Definition eines Strings als Char-Array zu diesem Fehler.
Gruß,
Thomas
Und würde bei oben genannten code zum crash führen...
Aktuell nutze ich: Windows, Linux, MacOS X, Solaris...weil die Welt nicht nur S/W ist!
Blog
Blog
Ooops, da muss ich dir recht geben.
Das kommt davon, wenn man mal eben schnell helfen will und den Zusammenhang nicht ganz mitbekommt.
Nun aber ne Lösung die laufen sollte:
Du wandelst dir den String in argv[1] in einen Integer um:
int arg = atoi(argv[1]);
und nutzt diesen (include der "stdlib.h" nicht vergessen).
Ist auch bei der Rechnung sicherer, da du auf jeden Fall integer Werte reingibst und nicht irgendwelche Zeichen.
Damit sollte nun alles laufen und keine Fehlermeldung mehr auftauchen.
Gruß,
Thomas
Das kommt davon, wenn man mal eben schnell helfen will und den Zusammenhang nicht ganz mitbekommt.
Nun aber ne Lösung die laufen sollte:
Du wandelst dir den String in argv[1] in einen Integer um:
int arg = atoi(argv[1]);
und nutzt diesen (include der "stdlib.h" nicht vergessen).
Ist auch bei der Rechnung sicherer, da du auf jeden Fall integer Werte reingibst und nicht irgendwelche Zeichen.
Damit sollte nun alles laufen und keine Fehlermeldung mehr auftauchen.
Gruß,
Thomas
Ähnliche Themen
-
PHP »-
XML Datei auslesen
(3. Dezember 2007, 18:00)
-
PHP »-
Sonderzeichen richtig konvertieren
(24. August 2004, 18:04)
-
eigener Server »-
Apache-Kompilierproblem
(18. März 2003, 21:02)
-
PHP »-
PHP-Kommprimierung? Wie implementieren?
(23. Oktober 2002, 17:12)


