gpt4 book ai didi

c++ - 无效的字符数组赋值

转载 作者:行者123 更新时间:2023-11-28 04:54:23 25 4
gpt4 key购买 nike

#include<iostream>
#include<string.h>
#include<conio.h>

using namespace std;

int main()
{
char name[30][50];
char aux[50];
int n,ok;

cout<<"number of pupils : ";
cin>>n;

for(int i=0;i<n;i++)
{
cout<<"name : ";
cin>>name[i];
}

do
{
ok=0;

for(int i=0;i<n-1;i++)
{
if(strcmp(name[i],name[i+1])>0)
{
aux=name[i+1]; // here is the bug
name[i+1]=name[i];
name[i]=aux;
ok=1;
}
}
}while(ok==1);

for(int i=0;i<n;i++)
{
cout<<name[i]<<endl;
}
}

我知道这是一个菜鸟问题,但非常感谢您的帮助。如何将 char[][] 分配给 char[] ?这个错误在我的代码中出现了 3 次,我没有足够的知识来找出原因

最佳答案

改用 char* aux;

当我们编写 char aux[50]; 时,我们会立即为 ~50 个 char 分配内存。在这里,您只是将指针交换到 char 数组(char 数组中的元素,即 2D char 名为 name 的数组),因此 char* 就是您要查找的内容。

如果您可以使用标准库,请像这样使用 std::swap:

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

关于c++ - 无效的字符数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47498986/

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