=0; i--) { if (s>"A" && s(题目标签: 笔试题,面试题,php面试题,java面试题,阿里巴巴面试题,腾讯面试题"/>
经典指数          
原因
2274
浏览数
0
收藏数
 

函数A将字符串str1转成小写,并打印出转化前后的字符串。另外,改错时不能改变函数的接口和主要思路。改错时,请指出行号。 char* str1 = "ABDFLjlero我们都是saf"; char* ToLower(char s[]) { static size_t i=sizeof(s); for (i; i>=0; i--) { if (s>"A" && s<"Z") { s += 26; 14 } } return s; } int A() { printf("old str[%s] after lower[%s]n", str1, ToLower(str1)); }

     举报   纠错  
 
切换
1 个答案

两个坑

1.sizeof(s) 得到是指针大小,不是字符数组长度

2.char* str1 = "ABDFLjlero我们都是saf";是常量字符串,不能对其进行修改

需要在函数中分配内存,保存返回结果

char* ToLower(char s[])

{

    if(s==NULL)

        return NULL;

    size_t i=0;

    while(s[i])

        ++i;  

    char *res=new char[i+1]();

    for (i; i>0; i--)

    {

        if (s[i-1]>='A' && s[i-1]<='Z')

            res[i-1]=s[i-1]-'A'+'a';

        else

        res[i-1]=s[i-1];

    }

    return res;

}

 
切换
撰写答案