我已经删除了很多代码,以便于阅读。具体来说,我正在尝试重写strcat
#include <iostream>
using namespace std;
char MYstrcat(char string1[],char string2[]);
int main()
{
char letter, letter_ans, again;
const int SIZE = 80;
char string1 [SIZE];
char string2 [SIZE];
获取字符数组的输入
cout << "Enter the first string: ";
cin >> string1;
cout << "Enter the second string: ";
cin >> string2;
letter_ans=MYstrcat(string1, string2);
cout << letter_ans;
cin.get(); cin.get();
return 0;
}
这是我的strcat函数版本
char MYstrcat(char string1[],char string2[])
{
int i = 0; //Counters
int j = 0;
//Read until null character is encountered then append.
while (string1[i] != '\0')
{
i++;
}
while (string2[j]!= '\0'){
string1[i] = string2[j];
i++;
j++;
}
string1[i]='\0'; // Place a null character in string2.
我在下一行中收到错误:从“char *”无效转换为“char”
return string1;
}
答案 0 :(得分:3)
char MYstrcat(char string1[],char string2[]); // returns a single character
char *MYstrcat(char string1[],char string2[]); // returns a pointer to a string that can be used like string1[] and string2[]
同样地,
char letter_ans; // this gives space for a single char, like int int_ans;
char *letter_ans; // this makes a pointer to an array of char's, the proper return type
但是,由于您要返回string1,因此您可能甚至不想使用返回类型。如果你声明你的函数:
void MYstrcat(char *string1,char *string2);
它将直接在string1上运行,不需要返回指向它的指针。
答案 1 :(得分:2)
数组在C ++中分解为指针,所以当你执行return String1
时,你返回char*
,因此你的函数的返回类型应该是char*
。
答案 2 :(得分:1)
你在标题中返回一个字符,而不是字符串。
答案 3 :(得分:1)
函数头char MYstrcat(char string1[],char string2[]);
将返回类型声明为char,但函数体返回一个字符串。 return string1;
答案 4 :(得分:0)
因为string1是一个char数组。 ie:char [] ...但是你的函数的返回类型是char。所以你得到一个错误。你可以将函数的返回类型更改为char *,然后测试你的代码。祝你好运。