gpt4 book ai didi

c++ - 使用 strcpy 时从 'char' 到 'const char*' 的转换无效

转载 作者:行者123 更新时间:2023-11-28 01:56:49 24 4
gpt4 key购买 nike

不能使用 strcpy 来正确交换 char 数组。我使用了 strncpy、memcpy 一切,但仍然没有得到正确的结果。

这是我的程序的样子。

class Carte
{
protected:
char Denumire[50];
char Autor[50];
char Editura[50];
int AnPublicare[50];
public:
void Citire(int n)
{
for(int i=0;i<n;i++)
{
cout<<"Denumire: "; cin>>Denumire[i]; cout<<endl;
cout<<"Autor: "; cin>>Autor[i]; cout<<endl;
cout<<"Editura: "; cin>>Editura[i]; cout<<endl;
cout<<"An Publicare: "; cin>>AnPublicare[i]; cout<<endl;
}
}

void Afisare(int n)
{
for(int i=0;i<n;i++)
{
cout<<"Denumire: "<<Denumire[i]<<endl;
cout<<"Autor: "<<Autor[i]<<endl;
cout<<"Editura: "<<Editura[i]<<endl;
cout<<"An Publicare: "<<AnPublicare[i]<<endl<<endl;
}
}

这就是问题所在。

void Sortare(int n)
{
int ok,aux;
char *auxDen , *auxAt, *auxEd;
do{
ok=1;
for(int i=0;i<n-1;i++)
if(AnPublicare[i]>AnPublicare[i+1])
{
ok=0;
aux=AnPublicare[i];
AnPublicare[i]=AnPublicare[i+1];
AnPublicare[i+1]=aux;

strcpy(auxDen,Denumire[i]);
strcpy(Denumire[i],Denumire[i+1]);
strcpy(Denumire[i+1],auxDen);

strcpy(auxAt,Autor[i]);
strcpy(Autor[i],Autor[i+1]);
strcpy(Autor[i+1],auxAt);

strcpy(auxEd,Editura[i]);
strcpy(Editura[i],Editura[i+1]);
strcpy(Editura[i+1],auxEd);
}
}while(ok!=1);
}
};

如何让它发挥作用?

最佳答案

在 C 中,char 数组是一个字符串,所以首先你的数据类型是错误的。你最好使用 std::string ,它就像一个字符串对象:

class Carte
{
protected:
std::string Denumire[50];
std::string Autor[50];
std::string Editura[50];
int AnPublicare[50];

然后移动它们与 int 相同:

std::string tmp;
tmp = Denumire[i];
Denumire[i] = Denumire[i+1];
Denumire[i+1] = tmp;

甚至更好:

std::swap( Denumire[i], Denumire[i+1] );

如果您仅限于 C 类型,则必须创建 char 数组的数组以保留 50 个字符串。

关于c++ - 使用 strcpy 时从 'char' 到 'const char*' 的转换无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40893046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com