小写到大写函数 - C.

时间:2013-04-15 23:44:02

标签: c function

我已经编写了这个函数来将一个小写的str转换成它的大写变体。我已经尝试了我知道的每种不同的配置,将小写字母转换为大写字母,但是当我打印它时。它仍以小写字母结尾。所以我有点困惑。

char* stoupper(char str[]);

char str[100]= "uppercase";

printf("%s" , stoupper(str)); // Test to make sure it is working 

char* stoupper(char str[])
{ 
      int i = 0; 

      while(str[i] != '\0') 
      { 
                   if(str[i] >= 'A' && str[i] <= 'Z') 
                   str[i] = str[i] + ('A' - 'a'); 
                   i++; 
      }
      return str;
}  

/* I've tried various variations of this function this is just the one i had first */ 

4 个答案:

答案 0 :(得分:3)

你的代码只修改已经大写的字母,并将它们变成谁知道什么(好吧,我相信你可以用ASCII表来解决)。如果您想使用小写字母,则需要更改if条件:

if (str[i] >= 'a' && str[i] <= 'z') 

答案 1 :(得分:2)

你为什么要重新发明轮子? ctype.h是你的朋友

使用toupper(int)方法。像

这样的东西
char* stoupper(char str[]);

char str[100]= "uppercase";

printf("%s" , stoupper(str)); // Test to make sure it is working 

char* stoupper(char str[])
{ 
      int i = 0; 

      while(str[i]) 
      { 
          str[i]=toupper(str[i]);
          i++; 
      }
      return str;
}  

答案 2 :(得分:1)

我认为你的if条件应该是:

if(str[i] >= 'a' && str[i] <= 'z') 

答案 3 :(得分:0)

你需要改变if语句的条件

  

if(str [i]&gt; ='A'&amp;&amp; str [i]&lt; ='Z')

我可以建议另一种方法将大写改为小写,反之亦然

char* stoupper(char str[])
{ 
      for(int i=0;i<strlen(str);i++)
          if(!(str[i]>='A'&&str[i]<='Z')){
              str[i]=str[i]^' ';
          }

      return str;
} 

此方法有效,因为

[小写字符的ASCII值] XOR [''的ASCII值= [大写中相同字符的ASCII值]

相关问题