我正在尝试创建自己的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;
}
答案 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;
}