2014-09-05 80 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

相关问题