无效的char阵列分配

Invalid char array assignment

本文关键字:分配 阵列 char 无效      更新时间:2023-10-16
#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 s。在这里,您只需要将指针交换为 char数组( char数组数组中的元素,即2d char阵列,称为 name),所以 char*是您要寻找的。

如果您可以使用标准库,请使用 std::swap,so:

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