CCS Printf的问题
程序是这样的,long i = 10;
long j = 3;
printf("i = %ld, j = %ld\n", i, j);
但是输出结果却是:
i = , j =
为啥没有结果啊? 经过2天不断的尝试,问题解决了。
一定要重定向fputc,putc,putchar,fputs,我之前没有重定向fputs,就导致了输出数据不完整的问题
#include <stdio.h>
#include <string.h>
int fputc(int _c, register FILE *_fp)
{
while (SciaRegs.SCICTL2.bit.TXEMPTY == 0);
SciaRegs.SCITXBUF = _c;
return _c;
}
int putc(int _c, register FILE *_fp)
{
while (SciaRegs.SCICTL2.bit.TXEMPTY == 0);
SciaRegs.SCITXBUF = _c;
return _c;
}
int putchar(int data)
{
while (SciaRegs.SCICTL2.bit.TXRDY == 0);
SciaRegs.SCITXBUF=data;
return data;
}
int fputs(const char *_ptr, register FILE *_fp)
{
unsigned int i, len;
len = strlen(_ptr);
for(i=0 ; i<len ; i++)
{
while (SciaRegs.SCICTL2.bit.TXEMPTY == 0);
SciaRegs.SCITXBUF = (uint8_t) _ptr;
}
return len;
}
//之前没有重定向fputs函数,造成了问题,添加了之后,就OK了
fputc() 把 字符 c 转换到 unsigned char 类型, 然后 从 stream 流 输出.
fputs() 把 字符串 s 从 stream 流 输出, 但是 不输出 结尾处的 '\0'. putc() 等于 fputc() , 只是 它 可能 以 宏 的 形式 实现, 并 多次 访问 stream 流.
putchar(c); 等于 putc(c,stdout).
puts() 从 stdout 输出 字符串 s 和 一个 换行符 (newline). 如果 操作 成功, fputc(), putc() 和 putchar() 返回 把 字符 从 unsigned char 类型 转换来的 int 值, 否则 返回 EOF . 同时,还有 如果 操作 成功, puts() 和 fputs() 返回 大于等于零的值, 否则 返回 EOF . 同时感谢楼主分享自己遇到的问题,为其他人提供了好的资源,感谢楼主分享
页:
[1]