大神看看这个C语言结构体程序都是哪里不对。100分送上。uchar,uint是宏定义的unsign
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大神看看这个C语言结构体程序都是哪里不对。100分送上。uchar,uint是宏定义的unsign相关的知识,希望对你有一定的参考价值。
大神看看这个C语言结构体程序都是哪里不对。100分送上。uchar,uint是宏定义的unsigned char ,unsigned int
#include <stdio.h>#include <inttypes.h>
typedef unsigned char uchar;
struct BASICCAN_BUFStruct
uchar IDHB;
uchar IDL_R_DLC;
uchar Frame_Data[8];
send_BUF;
uchar send_BUF_init(uchar j)
send_BUF.IDHB = 0x99;
send_BUF.IDL_R_DLC = 0xE8;
send_BUF.Frame_Data[0] = j;
send_BUF.Frame_Data[1] = 0x00;
send_BUF.Frame_Data[2] = 0x00;
send_BUF.Frame_Data[3] = 0x00;
send_BUF.Frame_Data[4] = 0x00;
send_BUF.Frame_Data[5] = 0x00;
send_BUF.Frame_Data[6] = 0x00;
send_BUF.Frame_Data[7] = 0x00;
return(send_BUF.Frame_Data[0]);
int main(int argc, char *argv[])
uchar u, angle;
float angle0;
u = 0x00;
angle0 = 60 * u / 51;
angle = angle0;
printf("u = 0x%X, angle = 0x%X, angle = 0x%X\\n", u, angle, angle0);
send_BUF_init(angle);
printf("send_BUF.Frame_Data[0] = 0x%X\\n", send_BUF.Frame_Data[0]);
return 0;
uchar printf打印 应该用 %c ,%x是打印的十六进制值,你这个U用0 得到的结果只能是0 ,所以修改U的值,就可以正常显示了
void main改为int main(int grac,char *argv[]),还有加的头文件分别是什么意思啊,main函数返回0又是什么
http://pan.baidu.com/share/link?shareid=3926801427&uk=2235005660
我在上位机得到的数据全是0你帮我看看
你这个问题,就是多添加打印调试信息,判断哪里出问题了,代码有点长,没时间给你检查。你自己慢慢检查吧,int main(int argc, char *argv[]) 这个是准备的C语言 main函数格式
void main这个有些编译不能编译,而int main是所有编译器都可以编译的
我不是printf一个字符。我是在输出unsignedchar的八个二进制数
参考技术B %s 是输出到0为止,这个程序prinft所有的结果都是0。。。关于C语言的结构体中元素的筛选,排列顺序。
这是我写的一个程序。先定义了一个结构体person,结构体类型数组per和结构体类型指针,p,q。我是想从结构体数组中,按照字母顺序,从小到大的,把姓名排列,并且输出。我是一个初学者啊,希望高手能帮我看看,我的这个程序怎么出错了,应该怎么改正。谢谢大家了~~~
#include "stdafx.h"
#include "string"
void main()
struct person
char name[20];
char sex;
int age;
float height;
per[7]="Li Ping",'M',22,178.2,"Gao Ming",'F',23,171.5,"Zhao Er",'F',32,168.6,"Wang Ying",'F',20,158.9,"Zhang Xiao",'M',25,181.0,"Deng Tao",'M',27,177.6,"Hao San",'F',22,175.7,;
struct person *p;
struct person *q;
q=p=per;
for(;p<per+7;p++)
if(strcmp(p->name,(p+1)->name)>0)
*q=*(p+1);
*(p+1)=*p;
*p=*q;
printf("name=%-18s,sex=%3c,age=%4d,height=%7.2f\n",p->name,p->sex,p->age,p->height);
只要改一点点就好了,写注释的地方就是改动的地方。
#include "stdafx.h"
#include "string"
void main()
struct person
char name[20];
char sex;
int age;
float height;
per[7]="Li Ping",'M',22,178.2,"Gao Ming",'F',23,171.5,"Zhao Er",'F',32,168.6,"Wang Ying",'F',20,158.9,"Zhang Xiao",'M',25,181.0,"Deng Tao",'M',27,177.6,"Hao San",'F',22,175.7,;
struct person *p;
struct person q; //这行,去了*
for (int i = 0; i < 7; i++) //这行,新加的
for(p = per; p < per+7; p++) //这行,加了p=per
if(strcmp(p->name,(p+1)->name)>0)
q=*(p+1); //这行,去了*
*(p+1)=*p;
*p=q; //这行,去了*
//下面这几行,最后循环一次输出排序的结果
for(p = per; p < per+7; p++)
printf("name=%-18s,sex=%3c,age=%4d,height=%7.2f\n",p->name,p->sex,p->age,p->height);
本回答被提问者采纳 参考技术B 结构体在C中属于复杂类型,不能用一个"="就把全部内容赋给另一个变量。所以对结构体数组排序时最好是另建一个结构体型指针数组(如改过的代码中的*这[7]),指针是简单变量,按要求对这个指针数组进行排序就简单了……////////////后是有改动的,自己看,可续问。
#include "stdio.h"//
#include "string.h"//
void main(void)//
struct person
char name[20];
char sex;
int age;
float height;
per[7]="Li Ping",'M',22,178.2,
"Gao Ming",'F',23,171.5,
"Zhao Er",'F',32,168.6,
"Wang Ying",'F',20,158.9,
"Zhang Xiao",'M',25,181.0,
"Deng Tao",'M',27,177.6,
"Hao San",'F',22,175.7,;
struct person *p[7],*q;/////////////////////////////
int i,j;
for(i=0;i<7;i++)
p[i]=&per[i];
q=per;
for(i=0;i<6;i++)
for(j=i+1;j<7;j++)
if(strcmp(p[i]->name,p[j]->name)>0)
q=p[i];
p[i]=p[j];
p[j]=q;
printf("name=%-18s,sex=%3c,age=%4d,height=%7.2f\n",p[i]->name,p[i]->sex,p[i]->age,p[i]->height);
以上是关于大神看看这个C语言结构体程序都是哪里不对。100分送上。uchar,uint是宏定义的unsign的主要内容,如果未能解决你的问题,请参考以下文章