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