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;
} /*
题目要求:编写一个函数,用数组形式接受字符串。
这个函数将字符串的所有单词的第一个字母转化为大写(如果已经是大写则保留)
让用户输入一个字符串,然后将字符串作为一个参数传递给子函数,最后将变换后的最终结果显示。
*/
# 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;
} 奇宝 发表于 2020-4-11 23:50
/*
题目要求:编写一个函数,用数组形式接受字符串。
这个函数将字符串的所有单词的第一个字母 ...
太感谢了!!!
页:
[1]