c - C 中简单 for 循环中的预期标识符或 '('

标签 c for-loop compiler-errors cs50 expected-exception

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

最佳答案

你不需要第二个 int

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

改为使用

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

关于c - C 中简单 for 循环中的预期标识符或 '(',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39712873/

相关文章:

AndroidManifest.xml - 当我构建项目时,一行会自动更改

C++ -Weffc++ 警告与指针

c - 如何将随机整数的范围从1-10扩大到1-200

objective-c - "Reference to ' ' is ambiguous"将纯 C header 包含到 Obj-C iOS 项目时

c - 这段代码如何高精度地计算圆周率?

r - R中的for循环不绑定(bind)文件

python - 如何将数组中的每个元素与大数相乘而不会出现 OverflowError : Python int too large to convert to C long?

c - 在 ncurses 中滚动数据

Python:For 循环遍历列表理解

单声道出现意外的编译器错误