当我尝试编译代码时,从char *到char得到转换错误

时间:2012-05-03 04:19:37

标签: c++ function

我已经删除了很多代码,以便于阅读。具体来说,我正在尝试重写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;
}

5 个答案:

答案 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 *,然后测试你的代码。祝你好运。