c语言中交换两个结构体的值

void SortDat()
{
int len,i,j;
PRO val;
memset((PRO *) & val, 0, sizeof(sell));
len = sizeof(sell) ;
printf("%d",val.je);
for(i=0;i<100;i++)
for(j=i+1;j<100;j++)
{if (sell[i].je < sell[j].je || (sell[i].je = sell[j].je) && (strcmp(sell[i].dm,sell[j].dm)<0) )
{
//val=sell[i];
//sell[i]=sell[j];
//sell[j]=val;
memcpy((PRO *) & val, (PRO *) & sell[i], len) ;
memcpy((PRO *) & sell[i], (PRO *) & sell[j], len) ;
memcpy((PRO *) & sell[j], (PRO *) & val, len) ;
}

}
下面前面用//的跟接下去的三句有什么区别,为么后面那个能运行,前面的不行

字符串不能用等号赋值

因此你上面注释掉的三行是不正确的

可以用memcpy 或者 strcpy

反正方式你也看明白了

都是 变量交换追问

typedef struct {
char dm[5] ; /* 产品代码 */
char mc[11] ; /* 产品名称 */
int dj ; /* 单价 */
int sl ; /* 数量 */
long je ; /* 金额 */
} PRO ;
谢谢你,这是结构体的定义,结构体不能直接赋值吗

追答

冒泡的话  结构体是可以 整体的 

 

需要一个 对象来当做中介

 

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言中交换两个结构体的值
字符串不能用等号赋值 因此你上面注释掉的三行是不正确的 可以用memcpy 或者 strcpy 反正方式你也看明白了 都是 变量交换

C语言关于两个结构体中所有值互换的问题
A=B;B=t;即可·~~

C语言怎么将结构体的内容复制到另一个结构体中
C并不支持结构体变量的直接赋值,一般采用memcpy(&a,&b,sizeof(a))的方式

c语言结构体数组怎么交换?
定义一个struct cj temp;然后就直接交换啊。我把那块做成函数,楼主直接调用吧,主函数就没写完整了。include <stdio.h> struct cj { int No;char Name[20];int cj1;int cj2;int cj3;int pingjun;int Number;};int main(int argc, char *argv[]){ struct cj student[50];void sort(st...

在C语言中。结构体变量之间可以相互赋值吗?
可以直接赋值。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。举例:voidmain(){ STUstu1={0,10};STUtemp={12...

C\/C++编程笔记:C语言结构体想要直接赋值,应该如何实现?
从结果可以看出,C语言中结构体的直接赋值是可行的。我们可以通过查看struct_assign()函数的汇编实现,从底层了解C语言是如何实现两个结构体之间的赋值操作的。这段汇编比较简单,由于结构体的对齐特性,sizeof(struct Foo)为16,通过四次movl操作将foo1的结构体内容拷贝到结构体foo2中。从汇编上可以看出...

在c语言中p和q代表两个结构体指针如果想让p里面的word字符数组等于q...
包含string.h,然后用一句strcpy(p->word,q->word);就可以了。注意前者的空间必须能放得下后者,且后者是字符串。

c语言如何 把结构体内的变量的值互换
同类型结构体间可以直接赋值 struct phoneinfor s1,s2,temp;temp=s1;s1=s2;s2=temp;你这个不行:if(strcmp(phonebook[j].name,phonebook[j+1].name)>0){ phonebook3=phonebook[j];\/\/phonebook3是phoneinfor3类型的,你得把它定义为phoneinfor类型的 phoneinforphonebook[j]=phonebook[j+1];phone...

在c语言标准中结构体之间是否可以直接赋值?
结构体在C语言中用于组合多个数据类型,它们能够存放不同或相同类型的多个数据。在定义结构体之后,可以通过初始化结构体变量或使用结构体数组来操作它们。结构体定义只表示一种类型,并没有为结构体成员分配实际内存空间。因此,直接对结构体进行赋值是不正确的。例如,定义一个名为“Tea”的结构体,它...

C语言中一个结构体的指针如何指向另一个结构体所申请的内存,知道的告诉...
你想让node2指向node1所指向的内容,直接node2=node1;就是了。node2->next=node1;是让node2所知结构体的next指针指向了node1,而node2依然指向原来的结构体。

相似回答