-1

文字列に文字のみが含まれているかどうかをチェックする関数を作成します。nループの外で宣言した場合:

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

エラーはなく、うまく機能しますが、n宣言を内部に移動すると:

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

エラーがあります:

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.

なんで?main() に同じループがあり、うまく機能しています。誰かが私に問題を説明できますか? ありがとう!

完全に機能:

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;
}
4

2 に答える 2

4

変化する:

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

に:

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

(ここでの構文は、for ループ内にあるかどうかに関係なく、同じ型の複数の変数の宣言の場合とほとんど同じであることに注意してください。)

于 2016-09-26T21:43:33.277 に答える