2016-09-26 30 views
-1

簡單的for循環我寫functiton,該檢查是字符串只包含字母或沒有。如果我宣佈n外循環:預計標識符或「(」在用C

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; 
} 
+1

旁註:用布爾結果與'1'或者'0'不要比較功能! '如果(!isalpha(..))'更容易閱讀('!'讀作「不」),只需大聲說出兩個表達式。 – Olaf

+0

您是否嘗試刪除第二個「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