2015-10-06 92 views
0

如何在C語言中使用topper和tolower? 我試過運行我製作的程序,它運行正常 問題是因爲我應該將它提交給網站以檢查它是對還是錯,每次我提交它時,都會顯示編譯錯誤。toupper tolower

我做的MacBook上的代碼,使用Xcode和它說我toupper和tolower的代碼 - 在C99

#include <stdio.h> 
#include <string.h> 
int main() 
{ 
    int input; 
    scanf("%d",&input); 
    int jumlahkata; 

    char kalimat[100]; 

    for(int i=0;i<input;i++) 
    { 
     scanf("%s",kalimat); 
     jumlahkata=strlen(kalimat); 
     for(int j=0;j<jumlahkata;j++) 
     { 
      if(j%2==0 || j==0) 
      { 
       kalimat[j]=toupper(kalimat[j]); 
      } 
      else 
      { 
       kalimat[j]=tolower(kalimat[j]); 
      } 
     } 
     printf("%s\n",kalimat); 
    } 

    return 0; 
} 
+2

不這樣做'jumlahkata = strlen的()'只是'爲(INT J = 0; kalimat [J] = '\ 0'; + + j)'很好。此外,你可以寫可讀的眼睛代碼。爲了避免這個錯誤啓用編譯器警告,編譯器應該告訴你*隱式聲明函數tolower()'*。 –

+3

而'0%2'也是'0'。 –

+0

你在本地得到一個警告*('隱式聲明');可能會有警告在您要提交的網站上被視爲錯誤。所以擺脫這些警告。閱讀[關於任何隨機手冊](http://linux.die.net/man/3/tolower)應該足夠了。 – usr2564301

回答

9

touppertolower功能「TOUPPER」的隱含聲明是無效的在ctype.h定義。只需將該文件包含在行#include <ctype.h>中即可。

+0

與他的問題無關。他說「它運行得很好」,因此它編譯 –

+2

當然,它*編譯*很好,但它*工程*純粹是偶然的。編譯器假定一個函數接受一個'int'並返回一個'int',在這種情況下,只是*發生*是正確的! – owacoder

1

您需要包含標題<ctype.h>

另外應該是size_t類型,因爲您在其中存儲了strlen的結果。

或者不要使用它(正如@iharob先生所指出的那樣),它是不必要的。由於它是字符串,只需檢查null character作爲循環條件。

+1

或者根本不要使用'strlen()'。因爲這樣做意味着要兩次計算字符。 –

+1

@iharob是的,這是不必要的,他可以只檢查字符串'\'。 – ameyCU

+0

是的,他需要包含標題,但與他的問題無關。他說「它運行得很好」,因此它編譯。他在寬鬆的環境中混合使用C和C++。 –

0

你混合使用C和C++:

int input; 
scanf("%d",&input);   // in C, following the first executable statement you may not declare variables until the next block 
int jumlahkata;    // declaring the variable here is C++ 

char kalimat[100];   // declaring the variable here is C++ 

for(int i=0;i<input;i++)  // declaring the variable here is C++