2016-09-26 6 views
-1

で、単純なforループでは、私はfunctitonを書き、そのチェックが文字列では、文字だけやないが含まれている私はループの外nを宣言する場合:。予想される識別子または「(」C

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

それはエラーがないと素晴らしい作品が、私は内部のn宣言を移動した場合:

vigenere.c:71:21: error: expected identifier or '(' 
    for (int i = 0, int n = strlen(str); i < n; i++) 
        ^
vigenere.c:71:21: error: expected ';' in 'for' statement specifier 
vigenere.c:71:21: error: expected expression 
vigenere.c:71:46: error: use of undeclared identifier 'n' 
    for (int i = 0, int n = strlen(str); i < n; i++) 
              ^
vigenere.c:71:47: error: expected ')' 
    for (int i = 0, int n = strlen(str); i < n; i++) 
              ^
vigenere.c:71:9: note: to match this '(' 
    for (int i = 0, int n = strlen(str); i < n; i++) 
     ^
vigenere.c:71:49: error: use of undeclared identifier 'i' 
    for (int i = 0, int n = strlen(str); i < n; i++) 
               ^
6 errors generated. 

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

私はエラーを持っています0

なぜですか?私はmain()で同じループを持ち、それは素晴らしい仕事です。 誰かが私に問題を説明できますか? ありがとう!

のfuction完全:

int is_alpha_string(string str) 
{ 
    //for (int i = 0, int n = strlen(str); i < n; i++) 
    int n = strlen(str); 
    for (int i = 0; i < n; i++) 
    { 
     if (isalpha(str[i]) == 0) 
     { 
      return 0; 
     } 
    } 

    return 1; 
} 
+1

追記を使う必要はありません: '1'または '0'とブール結果と機能を比較しないでください! 'if(!isalpha(..))'ははるかに読みやすく( '!'は "not"と読みます)、両方の表現を大声で話してください。 – Olaf

+0

2番目の 'int'を削除しようとしましたか? – Olaf

答えて

4

変更:

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

へ:

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

(それは、任意の宣言のためになるよう、ここで構文はほとんど同じであることに注意してくださいforループであるかどうかにかかわらず、同じ型の複数の変数)

+0

ありがとう!私は何か愚かなことを知っていた。私はCの初心者で、疲れました。 :)寝る必要があります – lebvlad

4

あなたは、第二のint

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

ではなく

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

"あなたは必要ありません" - 実際にはオプションではなく、違法です。 – Olaf

関連する問題