[应用相关] 我想将一个整型数转换成字符串

[复制链接]
3314|13
 楼主| handleMessage 发表于 2016-12-16 21:26 | 显示全部楼层 |阅读模式
求各位大神指点 我想将一个整型数转换成字符串 然后在串口上显示 网上看的说用sprintf这个函数 可是我调用这个函数的时候(已加入头文件stdio.h) 编译的时候他说有错
bbapple 发表于 2016-12-16 21:31 | 显示全部楼层
楼主详细说说怎么回事啊,这么说太笼统了
wanglaojii 发表于 2016-12-16 21:34 | 显示全部楼层
把你的代码贴上看看啊,根据提示似乎你参数使用错误
laozhongyi 发表于 2016-12-16 21:39 | 显示全部楼层
是啊,还是先上代码看看吧
 楼主| handleMessage 发表于 2016-12-16 21:41 | 显示全部楼层
void UARTPutstring( );
void UARTPutChar();
void UART_init();

int a=10;
char *s;



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);

}
zhouhuanの 发表于 2016-12-16 21:45 | 显示全部楼层
int sprintf(char *, const char *, ...)
第二个参数类型不兼容,出错信息已经清楚明了呀。
Edisons 发表于 2016-12-16 21:50 | 显示全部楼层
sprintf(s,"%d",a);//这才是正确的用法吧
_gege 发表于 2016-12-16 21:54 | 显示全部楼层

s只是一个指针,没有指向具体的存储空间,运行时会出错的。
Mozarts 发表于 2016-12-16 21:58 | 显示全部楼层
应该是将s定义为数组就可以了。
Mozarts 发表于 2016-12-16 22:00 | 显示全部楼层
第二个参数应该是格式化字符,而不是待转换的整数。
Listate 发表于 2016-12-16 22:03 | 显示全部楼层
先拆成单个的整形数的,单后输出时统一加上48输出就OK啦
heisexingqisi 发表于 2016-12-16 22:36 | 显示全部楼层
itoa是广泛应用的非标准C语言和C++语言扩展函数。由于它不是标准C/C++语言函数,所以不能在所有的编译器中使用。但是,大多数的编译器(如Windows上的)通常在<stdlib.h>/<cstdlib>头文件中包含这个函数。
功能:将任意类型的数字转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi
heisexingqisi 发表于 2016-12-16 22:37 | 显示全部楼层
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5. int number=123456;
  6. char string[25];
  7. itoa(number,string,10);
  8. printf("integer=%d string=%s\n",number,string);
  9. return0;
  10. }


zhuomuniao110 发表于 2016-12-17 11:24 | 显示全部楼层
使用stdlib.h的函数可以直接转换,无需自己写代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

166

主题

1689

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部