尝试将 char[] 传递给 C 中的另一个字符 []
Trying to pass a char[] to another in C
好吧,我不知道在这里做什么:
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) 来复制它们。要非常小心缓冲区溢出(也许使用 strncmp
和 strncpy
等)。确保所有字符串都以 null 结尾。使用 qsort(3) 进行排序。
在C++中,你应该使用知道<
的std::string
;然后你可以使用std::sort对它们进行排序。如果您使用像 std::set 或 std::map 这样的有序容器,它们将按构造排序。
使用 strcpy 分配char
数组
strcpy(tempchar, productos[z].nombre);
strcpy(productos[z].nombre, productos[z+1].nombre);
strcpy(productos[z+1].nombre, tempchar);
对结构数组进行排序时,通常希望交换整个结构,而不仅仅是单个成员。幸运的是,赋值运算符处理结构,即使它们包含数组。因此,如果您这样做,您的排序算法将减少错误:
temp = productos[z];
productos[z] = productos[z+1];
productos[z+1] = temp;
(如何声明temp
留给读者练习)
或者,如果允许您使用 c++,您可以
std::swap(productos[z],productos[z+1]);
请记住,您的排序算法仍然有问题。您应该查找"bubblesort"以查找可以实现的死的简单排序算法。或者更好的是,如果这不是一个练习,请使用现有的实现,如qsort
或std::sort
还有另一种方法
struct
{
char *nombre = (char*)malloc(sizeof(char) * 30);
int codigo;
}productos[10];
int z = 0;
char *tempchar = (char*)malloc(sizeof(char) * 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;
}
}
相关文章:
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 关于字符数组,我正在尝试将数组中的每个字符分配给另一个值
- 使用动态分配将 char* 复制到另一个字符**
- 将字符向量复制到另一个向量
- 如何将一个结构的字符数组复制到结构的另一个字符数组中?
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 如何检查一个字符是否与字符数组中的另一个字符匹配?
- C++:使用另一个字符将一个字符大写
- 将字符从一个字符串简单分配到另一个字符串不起作用
- 使用 char 将一个字符数组分配给另一个字符数组时出现奇怪的行为
- 字符* 复制到另一个字符* 运行时错误
- 使用另一个字符数组进行字符初始化
- 将字符指针传递给另一个函数
- 在另一个字符串中逐个复制字符串字符
- C :在字符串中找到一个char,然后在先前的char之后找到另一个字符
- 炭的类型乘以另一个字符
- 如何在 C++ 的字符串中打印从一个索引到另一个索引的字符范围
- 字符串构造函数将两个字符* 放入另一个 std::string 在 C++14 中有效,但不适用于 C++17
- 计算一个字符串的每个字符在另一个字符串中的出现次数
- 给定一个字符串,如何检查前几个字符 == 另一个字符串?C++