C 中简单 for 循环中的预期标识符或“(”

Expected identifier or '(' in simple for-loop in C

我写函数,检查字符串是否只包含字母。如果我在循环外声明 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;
}

变化:

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

至:

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

(请注意,这里的语法与任何声明具有相同类型的多个变量的语法非常相似,无论它是否在 for 循环中。)

你不需要第二个整数

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

改为使用

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