Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

jazzdee

Lebende Foren Legende

Dabei seit: 12.11.2002

Beiträge: 1 886

 

1 Zum Seitenanfang

Montag, 17. November 2008, 14:45

C - Error: comparison between pointer and integer

Hallo zusammen, ich habe folgenden Code:

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:

Zitat

comparison between pointer and integer
Ziel ist es, dass ich mein Programm mit einem Paramater starte (z.B. 10) und dann soll die for-Schleife dementsprechend durchlaufen.
Was muss ich an meinem Code ändern, um dieses Problem zu umgehen? Kann mir da jemand weiterhelfen?
 

tommyfin

Routinier

Dabei seit: 20.07.2004

Beiträge: 307

 

2 Zum Seitenanfang

Montag, 17. November 2008, 16:29

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
 

silence

König

Dabei seit: 28.02.2003

Beiträge: 981

 

3 Zum Seitenanfang

Montag, 17. November 2008, 16:36

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
 

tommyfin

Routinier

Dabei seit: 20.07.2004

Beiträge: 307

 

4 Zum Seitenanfang

Montag, 17. November 2008, 19:24

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
 

jazzdee

Lebende Foren Legende

Dabei seit: 12.11.2002

Beiträge: 1 886

 

5 Zum Seitenanfang

Montag, 17. November 2008, 23:03

Super, funktioniert einwandfrei!
Danke :-)
 

Ähnliche Themen