好吧,我不知道该怎么办:

struct
{
       char nombre[30];
       int codigo;
 }productos[10];

int z = 0;
char tempchar[30];

for (z=0; z<9; z++)  {
           if (productos[z].codigo>productos[z+1].codigo) {
              tempchar = productos[z].nombre;
              productos[z].nombre = productos[z+1].nombre;
              productos[z+1].nombre = tempchar;
           }
     }

我收到以下错误消息:
ISO C++禁止数组的赋值
显然有更多的代码,但我只是包括了它与错误的关系。
我只想按代码对产品名称进行排序。那么,我在这里能做什么?

最佳答案

是C还是C++?
在C语言中,应该使用strcmp(3)比较字符串,并使用strcpy(3)复制字符串。小心buffer overflow(可能使用strncmpstrncpy等)。确保所有字符串都以空结尾。使用qsort(3)进行排序。
在C++中,你应该使用知道“cc>”的std::string;然后可以使用std::sort对它们排序。如果你使用像std::setstd::map这样的订购容器,它们将按结构进行订购。

10-08 12:59