2016-05-31 13 views
-3

forループ内で宣言されていると、なぜこのエラーが発生するのですか?「宣言されていない識別子を使用していますか?」というエラーが表示されるのはなぜですか?

#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

どのようなエラーが報告されましたか?どのような変数に?これは現用バージョンか失敗したバージョンですか?変数 'n'のために –

+1

、そうでしょうか? –

+0

エラーメッセージについて質問するときは、**常に**あなたの質問に**完全**エラーメッセージを含めてください。投稿を編集して追加してください。 – user694733

答えて

1

理由は終わり;です:

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

あなたのループ宣言の後に余分なセミコロンを持っている:

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

これはあなたの変数inが宣言されていないことになります期待されるループ本体で

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

for -loop宣言の最後にセミコロンを置くことはできません。 ;は有効なステートメントであり、C/C++では中身のループ(およびifステートメント)に単一ステートメントを使用するときに中括弧{}を省略できるので、空のボディにforループがあることを意味します。代わりに、次の操作を行います。

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

もう一つのヒント:あなたのfor - ループの外で、あなたの変数を定義し、ちょうどfor文でカウンタを初期化します。

int n = strlen(name); 
int i; 
for(i = 0; n < i; i++) 
関連する問題