创建自己的" charcopy"使用指针的函数

时间:2014-09-18 18:12:37

标签: c++ pointers

我正在尝试创建自己的char副本(如strcopy)函数。 需要自定义,我不能使用std lib(Strcopy)中的那个。我无法将我的char数组更改为字符串。我无法使用内置函数来复制字符。 我必须使用指针来操作数组

我正在努力解决真正的 strcopy的样子,但我似乎无法让我的工作。我 THINK 我想创建一个指向strcpy的指针(char 目的地,char源),然后我通过源操作目标,但没有任何东西正在复制,我只是打印垃圾。请帮助打开所有建议

void StrCpy(char *destination, char *source);

int main()
{
card card1[10], card2[10];
card1[0].cvalue = 1000;
card2[0].cvalue = 90000;
card *card1p = &card1[0];
card *card2p = &card2[0];
//set up card file to be read in
ifstream fin;
string finName;

//get file name from user
cout << "Enter file name...(cardFile.txt)" << endl;;
getline(cin,finName);


//open the file
fin.open(finName.c_str());


//check if cardFile.txt opens correctly
if(!fin.good())
{
    cout << "Error with card file" << endl;
    return 0;
}
else
{
    card *deckPointer = NULL;

    //prime fin
    //fin >> deck[i].suit;
    //fin >> deck[i].rank;
    //fin >> deck[i].cvalue;

    while(fin.good())
    {
    for(card1p = &card1[0]; card1p < &card1[10];card1p++)
        {
            fin >> (*card1p).suit;
            fin >> (*card1p).rank;
            fin >> (*card1p).cvalue;
        }   
    }    
}            
StrCpy((*card2p).suit, (*card1p).suit);
cout << (*card2).suit << endl;

}

void StrCpy(char *destination,char *source)
             {
             char *p = destination;
             *p = *source;


             }

2 个答案:

答案 0 :(得分:0)

void StrCpy(char *destination,char *source)
{
    char *p = destination;
    *p = *source;

}

不正确。基本上你在做什么 destination[0] = source[0],这不是实际副本。

你应该阅读指针。和格式化。并std::string

答案 1 :(得分:0)

通常,函数按以下方式定义

char * StrCpy( char *destination, const char *source )
{
    char *p = destination;

    while ( *p++ = *source++ );

    return destination;
}

又一个实现

char * StrCpy( char *destination, const char *source )
{
    char *p = destination;

    do
    {
        *p++ = *source;   
    } while ( *source++ );

    return destination;
}

还有一个

char * StrCpy( char *destination, const char *source )
{
    for ( char *p = destination; *p = *source; ++p, ++source );

    return destination;
}

char * StrCpy( char *destination, const char *source )
{
    char *p = destination;

    while ( *p = *source ) ++p, ++source;

    return destination;
}