fury可 发表于 2019-11-14 23:12:00

这里看不懂。。。这结果为什么会这样啊

#include<stdio.h>
void upperCase(char str[])
{
        for (int i = 0;i<sizeof(str); ++i)
        {
                if ('a' <= str && str <= 'z')
                        str -= ('a' - 'A');
        }
}
int main()
{
        char str[] ="what's your name";
        upperCase(str);
        printf("%s", str);
        return 0;
}

upperCase是要把小写字符变成大写
这个运行结果看不懂

fury可 发表于 2019-11-14 23:41:13

来个老哥指导一下

jackz007 发表于 2019-11-15 00:16:14

      这一句循环终止条件有问题:
for (int i = 0;i<sizeof(str); ++i)
      下面是我修改的代码,楼主不妨一试
#include<stdio.h>
void upperCase(char str[])
{
      int i                                                                               ;
      for(i = 0 ; str ; i ++) if(str >= 'a' && str <= 'z') str -= ('a' - 'A') ;
}

int main()
{
      char str[] = "what's your name" ;
      upperCase(str)                  ;
      printf("%s\n" , str)            ;
      return 0                        ;
}

fury可 发表于 2019-11-15 08:57:52

jackz007 发表于 2019-11-15 00:16
这一句循环终止条件有问题:

      下面是我修改的代码,楼主不妨一试

确实改过来了,不过我不知道为什么   sizeof(str)   的结果是4
页: [1]
查看完整版本: 这里看不懂。。。这结果为什么会这样啊