1

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

5 回答 5

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 进行操作,无需返回指向它的指针。

于 2012-05-03T04:28:28.793 回答
2

数组分解为 C++ 中的指针,所以当你return String1返回 achar*时,你的函数的返回类型应该是char*.

于 2012-05-03T04:22:17.107 回答
1

您在标题中返回一个字符,而不是一个字符串。

于 2012-05-03T04:20:58.873 回答
1

函数头char MYstrcat(char string1[],char string2[]); 将返回类型声明为 char,但函数体返回的是字符串。return string1;

于 2012-05-03T04:25:35.077 回答
0

因为 string1 是一个 char 数组。ie:char[]... 但你的函数的返回类型是 char 。所以你得到了一个错误。你可以将函数的返回类型更改为 char*,然后测试你的代码。祝你好运。

于 2012-05-03T09:12:09.290 回答