2014-09-05 78 views
0

它是將矢量中的小寫字符轉換爲大寫字符的代碼。 我得到21,23,24,26,29行錯誤。我在C新手編程。 請幫助我。第21,23,24,26,29行下標值既不是數組也不是指針也不是矢量

int main() 
{ 
    char orig[30]; 
    char dest[30]; 

    printf("Write a string :"); 
     scanf("%s",orig); 

     char uppercase(dest,orig); 
     printf("uppercase string = ",dest); 


} 



char uppercase(char destination,char origin){ 

    int i = 0; 

     while(origin[i]!='\0'){ 

     if(origin[i]>='a'&& origin[i]<='z'){ 
      destination[i]= origin[i] +'A'-'a'; 
     } 
     else destination[i]=origin[i]; 
       i++; 
     } 
    destination[i]='\0'; 

return destination; 

} 

回答

0

好了,所以你可能有一點點混亂有^^

雖然總體思路是正確的,你的方法調用不工作的方式。

嘗試是這樣的

int main() 
{ 
    char orig[30]; 
    char dest[30]; 

    printf("Write a string :"); 
    scanf("%s",orig); 

    dest = uppercase(orig); 
    printf("uppercase string = ",dest); 


} 



char[] uppercase(char origin){ 
    char destination[30]; 
    int i = 0; 

     while(origin[i]!='\0'){ 

     if(origin[i]>='a'&& origin[i]<='z'){ 
      destination[i]= origin[i] +'A'-'a'; 
     } 
     else destination[i]=origin[i]; 
       i++; 
     } 
    destination[i]='\0'; 

return destination; 

} 

雖然可能有更多的問題,但我不知道你是編程的語言,所以我真的不能幫你。

+0

感謝lot.Im編程C. – Fran 2014-09-09 21:50:04

0

有幾個問題在這裏:

  1. 您使用它之前,你不聲明你的大寫功能。雖然舊的C標準允許隱式函數聲明,但這不符合您希望的方式。欲瞭解更多信息,請參閱:Implicit function declarations in C
  2. 您的函數簽名中有類型不匹配。你應該通過一個字符數組,如char *char [],而不是明文char。返回類型相同。
  3. 並非真正的錯誤,但最好使用fgets而不是scanf來輸入字符串,這樣可以防止緩衝區溢出問題。請參閱本太:https://stackoverflow.com/a/1248017/2327880

這應該工作:

#include <stdio.h> 
#include <string.h> 

// uppercase function declaration 
char * uppercase(char *, char *); 

int main() { 

    char orig[31]; 
    char dest[31]; 

    printf("Write a string : "); 

    // use fgets instead of scanf in order 
    // to prevent buffer overflow problems 
    fgets(orig, 31, stdin); 

    // remove trailing newline 
    orig[strlen(orig) - 1] = '\0'; 

    uppercase(dest, orig); 
    printf("uppercase string = %s", dest); 

    return 0; 
} 

// uppercase function definition 
char * uppercase(char * destination, char * origin) { 

    int i = 0; 

    while(origin[i] != '\0') { 

     if(origin[i] >= 'a' && origin[i] <= 'z') { 
      destination[i] = origin[i] + 'A' - 'a'; 
     } else { 
      destination[i] = origin[i]; 
     } 

     i ++; 
    } 

    destination[i] = '\0'; 

    return destination; 
} 
+0

我會用fgets.Thank你! – Fran 2014-09-09 21:51:29

相關問題