打印
[应用相关]

整型数转换成字符串

[复制链接]
1307|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
feiqi1|  楼主 | 2017-1-21 12:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求各位大神指点 我想将一个整型数转换成字符串 然后在串口上显示 网上看的说用sprintf这个函数 可是我调用这个函数的时候(已加入头文件stdio.h) 编译的时候他说有错
沙发
androidbus| | 2017-1-21 12:50 | 只看该作者

把你的代码贴上看看啊,根据提示似乎你参数使用错误

使用特权

评论回复
板凳
litengg| | 2017-1-21 12:54 | 只看该作者
楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
地板
feiqi1|  楼主 | 2017-1-21 12:58 | 只看该作者
void UARTPutChar(unsigned int cTX)
{
   UCA0TXBUF=cTX;
   while (!(IFG2&UCA0TXIFG));  //waiting UCA0TXBUF is empty
   IFG2&=~UCA0TXIFG;           //clear TX interrupt flag
}



void UARTPutstring(char *str)
{

   do
   {
    UARTPutChar(*str);
   }
   while(*++str!='\0');
   UARTPutChar('\n');

}

void UART_init(void)
{
   P1SEL |=BIT1+BIT2;  //设置为外围模块第二功能P1.1,2 = USART0 TXD/RXD
   P1SEL2|= BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
   P1DIR  |= BIT2;           //P1.2  UART_TX
   P1DIR  &=~BIT1;           //P1.2  UART_RX       //串口发送数据端口为输出,接收数据端口为输入
   UCA0CTL1|=UCSWRST;    //USART第0位被置位0后,开始设置配置UART
   UCA0CTL0 &=~UC7BIT;       //设置数据位为8位
   UCA0CTL1 |=UCSSEL_2;      //选择波特率寄存器时钟信号,smCLK
   UCA0BR0=109;
   UCA0BR1=0;
   UCA0MCTL = UCBRS1;   //32k时钟下波特率为9600
   UCA0CTL1&=~UCSWRST;
   IE2 |= UCA0TXIE;
}


void main(void)
{

   WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗
   UART_init();
   sprintf(s,a);
   UARTPutstring(s);

}
  这样

使用特权

评论回复
5
qiangweii| | 2017-1-21 13:22 | 只看该作者
int sprintf(char *, const char *, ...)
第二个参数类型不兼容,出错信息已经清楚明了。

使用特权

评论回复
6
shashaa| | 2017-1-21 13:26 | 只看该作者
sprintf(s,"%d",a);//这才是正确的用法吧。。

使用特权

评论回复
7
xia00| | 2017-1-21 13:29 | 只看该作者
s只是一个指针,没有指向具体的存储空间,运行时会出错的。将s定义为数组就可以了。

使用特权

评论回复
8
pklong| | 2017-1-21 17:21 | 只看该作者
sprintf就是C语言里面的函数了。

使用特权

评论回复
9
pklong| | 2017-1-21 17:22 | 只看该作者
如果转换函数固定,可以直接一个一个数字转换。

使用特权

评论回复
10
hfdy01| | 2017-1-21 18:59 | 只看该作者
如果用const char*声明的话 a又是个整型数 那要怎样写

使用特权

评论回复
11
CallReceiver| | 2017-1-21 19:05 | 只看该作者
第二个参数应该是格式化字符,而不是待转换的整数

使用特权

评论回复
12
boy1990| | 2017-1-21 19:09 | 只看该作者
单后输出时统一加上48输出就OK啦

使用特权

评论回复
13
sourceInsight| | 2017-1-21 19:13 | 只看该作者

先拆成单个的整形数试试。。

使用特权

评论回复
14
sonicll| | 2017-1-21 19:47 | 只看该作者
本帖最后由 sonicll 于 2017-1-21 19:48 编辑

char BufOut[32];
int a = 65535;
sprintf(BufOut, "%d\r\n", a);
UARTPutstring(BufOut);

使用特权

评论回复
15
Levenburg| | 2017-1-22 14:11 | 只看该作者
参数类型不兼容

使用特权

评论回复
16
yjmwxwx| | 2017-1-22 16:11 | 只看该作者
这个自己写个很简单吧

使用特权

评论回复
17
可可球| | 2017-1-26 12:05 | 只看该作者
将s定义为数组试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

1616

帖子

1

粉丝