您现在的位置是:首页 > 众测

keil字符串存储(C51中有个字符串变量str)

vcbgfh8RQW 2024-04-14

一、keil c中如何将整型转化为字符串

可以使用sscanf,就像sprintf将整型数转换成字符串输出一样,逆运算(KEILC

中scanf和printf确定了通过单片机串行口完成输入输出模式,除非做了修改,一般实际中不用)。

给你个例子:

unsigned

char

string[5]={"1234"};

unsigned

int

n;

sscanf(string,"%u",&n);

//string是字符串,%u是格式控制串,u是无符号十进制数,&n是变量n的地址。

printf

("%d\n",n);

//可在KEIL

C

开发环境中输出观察

你可以把上面这部分代码放到KEIL

C中的HELLO.C程序中观察验证一下。

二、keil软件下浮点型转换为字符串

串口通信,是肯定不能直接用浮点型数据赋值通信的。如果照你要求保留一位有效数字,个人建议用以下方式通信:

1、将待发送数据乘10再强制转换为整数,如5.3x10=53,然后转换为字符串pSFrame[6]="5"; pSFrame[7]="3";就可以发送了。当然接收方接收到数据后需要除以10,才能得到正确数据。

2、按以上相同理论,其实只要你与接收方协定好通信协议,有正确而统一的编码、解码方式就可以,你这边不一定需要按具体数值发送。

3、浮点型数据的二进制表示方法:

按这个二进制代码通信也可以,只是同样,接收端也要知道如何解码。

三、keil c中如何把字符串转化为整型 具体一点

可以使用sscanf,就像sprintf将整型数转换成字符串输出一样,逆运算(KEILC

中scanf和printf确定了通过单片机串行口完成输入输出模式,除非做了修改,一般实际中不用)。给你个例子:

unsigned

char

string[5]={"1234"};

unsigned

int

n;

sscanf(string,"%u",&n);

//string是字符串,%u是格式控制串,u是无符号十进制数,&n是变量n的地址。

printf

("%d\n",n);

//可在KEIL

C

开发环境中输出观察

你可以把上面这部分代码放到KEIL

C中的HELLO.C程序中观察验证一下。

关于格式控制串(也就是“%u”等),可以查看一下KEIL

C的相关资料,与PC机的C语言略有不同。可以根据不同的要求转换成8进制、16进制、int型、long型等数据,相关符号有一二十种,此处就不细说了。

四、Keil***C51中有个字符串变量str***怎么转换成指针或数组

首先纠正一下,C语言没有“字符串变量”这一说,也就是没有一个特定的变量用来存放我们所说的字符串(java语言有,通过String类来实现)。

通常我们所说的字符串其实是很多单个字符组成的,默认以转义字符‘\0’结尾。

这里还要说明一下,常量(数值常量或是字符常量)在内存当中是没有地方专门存放它们的,只能通过变量来存放。既然上面说了,字符串是很多的字符常量组成的,那想要保存它,只能通过数组来保存。比如字符串:china存放在一个数组里可以这样写:

char str[ ]="china";

char str[ ]={'c','h','i','n','a'};

上面的两种形式都可以,结尾没有加上'\0'结束符,编译时编译器会默认帮我们加。

现在来回答你的问题。既然字符串保存在数组中,那就要熟悉数组的用法,这里我就不详细说明了,

但是我想提醒的一点就是,数组在声明时可以一次性对全部元素赋初值(称作初始化),如果在声明的时候没有初始化,那以后只能一个个给数组元素赋值。比如:

char str[5];//声明了一个长度为5的字符串(注意声明数组时数组长度一定是确定了的)

str[5]="china";//这句是错的,不能一次性引用数组,只能像下面一样一个个引用赋值:

str[0]='c';//正确

str[1]='h';

....//下面的自己完成

或者用初始化的形式:

char str[ ]="china";//正确,声明的同时初始化了数组,数组长度根据元素个数确定

数组说那么多。

那指针呢?好,我给你说两点。

第一:在上一步当中,我们把字符串保存到了数组当中,那只要用一个指针指向这个数组就OK了。那我们可以让这个指针指向数组的首地址也就是字符'c'(希望你对指针已经有了一定的基础),以后偏移一个单位的存储单元就可以指向下一个元素。可以向下面一样:

char str[ ]="china";

char*p;//声明一个指向char型的指针变量

p=&str[0];//指向数组的首地址,即取第0个元素的地址给p

当然,C语言当中数组名表示该数组的首地址,所以上面的这句可以写成:

p= str;

第二:一个字符串赋给一个指针变量,其实是将该字符串的首地址给了这个指针。所以,我们可以直接这样写而不用借助于数组:

char*p;//声明char型的指针变量

p="china";//字符串传递给指针的的是该字符串的首地址,即字符'c'的地址

这样,以后每偏移一个地址就指向下一个字符。比如我要指向'h',就p++;

这么说,懂吧?

文章版权声明:除非注明,否则均为典胜网原创文章,转载或复制请以超链接形式并注明出处。