2016-05-31 6 views
-3

Ich habe gesucht und kann nicht herausfinden, warum, warum ich diesen Fehler bekomme, wenn es innerhalb der for-Schleife erklärt wird?Warum erhalte ich den Fehler "Verwendung der nicht deklarierten Kennung?"

#include <cs50.h> 
#include <stdio.h> 
#include <string.h> 

int main (void) 
{ 
    char* sur; 
    char* space = " "; 
    char* name = GetString(); 

    printf("%c\n", name[0]); 

    for(int i = 0, n = strlen(name); n < i; i++); 
    { 
     if (strcmp(name[i],space)==0) 
     { 
     sur = name[i + 1]; 
     } 
     else 
     { 
     return 0; 
     } 
    } 
    printf("%s\n", sur); 
} 
+1

Welcher Fehler? Auf welche Variable? Ist das die Arbeitsversion oder die Fehlende? –

+1

für Variable "n", schätze ich? –

+0

Wenn Sie nach einer Fehlermeldung gefragt werden, ** ** ** ** fügen Sie immer die ** vollständige ** Fehlermeldung in Ihre Frage ein. Bitte [bearbeiten] Sie Ihren Post und fügen Sie ihn dort hinzu. – user694733

Antwort

1

Der Grund ist ; am Ende:

//... 
for(int i = 0, n = strlen(name); n < i; i++) 
//... 
3

Sie haben ein zusätzliches Semikolon nach dem Loop-Deklaration:

for(int i = 0, n = strlen(name); n < i; i++); 

dies Ihre Variablen verursachen i und n sein nicht angemeldeter in Ihrer erwarteten Schleife Körper

1
for(int i = 0, n = strlen(name); n < i; i++); 

Sie können kein Semikolon am Ende der for -loop-Deklaration platzieren. Die ; ist eine gültige Anweisung, und weil C/C++ ermöglicht geschweifte Klammern {} bei der Verwendung von einzelnen Anweisungen für die Körper der Schleifen (und if Anweisungen) weglassen, bedeutet dies, dass Sie eine for-Schleife über einen leeren Körper haben! Tun Sie dies statt:

for(int i = 0, n = strlen(name); n < i; i++) 

Noch ein Tipp: definieren Sie Ihre Variablen außerhalb Ihres for -loop und initialisieren nur der Zähler in der for Aussage.

int n = strlen(name); 
int i; 
for(i = 0; n < i; i++) 
Verwandte Themen