FISHER666 发表于 2020-4-11 23:42:44

c++的返回值问题

本帖最后由 FISHER666 于 2020-4-11 23:45 编辑

报错:invalid conversion from 'char*' to 'char',问题在27行开始的那个函数

/*
题目要求:编写一个函数,用数组形式接受字符串。
          这个函数将字符串的所有单词的第一个字母转化为大写(如果已经是大写则保留)
          让用户输入一个字符串,然后将字符串作为一个参数传递给子函数,最后将变换后的最终结果显示。
*/

# include <iostream>
using namespace std;
# include <cstring>

// 声明转换函数
char switch_letter(char str[]);

// 主函数部分
int main()
{
        char str;
       
        cout<<"请输入一段字符串,我来帮你转换第一个字符为大写"<<endl;
        cin.getline(str,100);
        cout<<"最终的输出结果是"<<switch_letter(str)<<endl;
       
        system("pause");
        return 0;
}

char switch_letter(char str[])
{
        // 新建一个与输入字符串等长的字符串
        char str_out;
        strcpy(str_out, str);
        char letter1 = str;
        if(isupper(letter1))
        {
                strcpy(str_out, str); // 保留原字符串
        }
        else
        {
                str_out = char(int(letter1)-32);
        }
       
        return str_out;
}

奇宝 发表于 2020-4-11 23:50:50

/*
题目要求:编写一个函数,用数组形式接受字符串。
          这个函数将字符串的所有单词的第一个字母转化为大写(如果已经是大写则保留)
          让用户输入一个字符串,然后将字符串作为一个参数传递给子函数,最后将变换后的最终结果显示。
*/

# include <iostream>
using namespace std;
# include <cstring>

// 声明转换函数
char* switch_letter(char str[]);

// 主函数部分
int main()
{
      char str;
      
      cout<<"请输入一段字符串,我来帮你转换第一个字符为大写"<<endl;
      cin.getline(str,100);
      cout<<"最终的输出结果是"<<switch_letter(str)<<endl;
      
      system("pause");
      return 0;
}

char* switch_letter(char str[])//返回结果不能是char数组,应该用指针,同时,不该返回局部变量的地址
{
      // 新建一个与输入字符串等长的字符串
      char str_out;
      strcpy(str_out, str);
      char letter1 = str;
      if(isupper(letter1))
      {
                strcpy(str_out, str); // 保留原字符串
      }
      else
      {
                str_out = char(int(letter1)-32);
      }
      
      strcpy(str, str_out);//不能返回局部变量的地址,所以再次赋值
      return str;
}

FISHER666 发表于 2020-4-12 00:03:34

奇宝 发表于 2020-4-11 23:50
/*
题目要求:编写一个函数,用数组形式接受字符串。
          这个函数将字符串的所有单词的第一个字母 ...

太感谢了!!!
页: [1]
查看完整版本: c++的返回值问题