lomo1316 发表于 2020-10-14 10:27

CCS Printf的问题

程序是这样的,   

         long i = 10;
            long j = 3;
            printf("i = %ld, j = %ld\n", i, j);

但是输出结果却是:
i = , j =

为啥没有结果啊?

lomo1316 发表于 2020-10-15 16:27

经过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了

蒋博1026 发表于 2020-10-18 12:32

fputc() 把 字符 c 转换到 unsigned char 类型, 然后 从 stream 流 输出.
fputs() 把 字符串 s 从 stream 流 输出, 但是 不输出 结尾处的 '\0'.

蒋博1026 发表于 2020-10-18 12:32

putc() 等于 fputc() , 只是 它 可能 以 宏 的 形式 实现, 并 多次 访问 stream 流.
putchar(c); 等于 putc(c,stdout).
puts() 从 stdout 输出 字符串 s 和 一个 换行符 (newline).

蒋博1026 发表于 2020-10-18 12:33

如果 操作 成功, fputc(), putc() 和 putchar() 返回 把 字符 从 unsigned char 类型 转换来的 int 值, 否则 返回 EOF .

蒋博1026 发表于 2020-10-18 12:33

同时,还有 如果 操作 成功, puts() 和 fputs() 返回 大于等于零的值, 否则 返回 EOF .

蒋博1026 发表于 2020-10-18 12:34

同时感谢楼主分享自己遇到的问题,为其他人提供了好的资源,感谢楼主分享
页: [1]
查看完整版本: CCS Printf的问题