c语言输出重定向函数,C库函数重定向c基础知识

#include  头文件

#ifdef __GNUC__

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif

PUTCHAR_PROTOTYPE

{

USART_SendData(EVAL_COM1, (uint8_t) ch);

while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)

{}

return ch;

}

定义了以上的

然后就可以调用 printf("\n\rPlease enter valid number between 0

and 9");

===============================================================

C库函数重定向

用户能定义自己的C语言库函数,连接器在连接时自动使用这些新的功能函

数。这个过程叫做重定向C语言库函数,如下图所示。

举例来说,用户有一个I/O设备(如UART)。本来库函数fputc()是把字符输出

到调试器控制窗口中去的,但用户把输出设备改成了UART端口,这样一来,

所有基于fputc()函数的printf()系列函数输出都被重定向到UART端口上去

了。

下面是实现fputc()重定向的一个例子:

extern void sendchar(char*ch);

int fputc(intch,FILE*f)

char tempch=ch;

sendchar(&tempch);

return ch;

}这个例子简单地将输入字符重新定向到另一个函数sendchar(),sendchar()

假定是个另外定义的串口输出函数。在这里,fputc()就似乎目标硬件和标

准C库函数之间的一个抽象层。

这里是用来进行printf的重定向的,就是我们像用我们C语言标准库的的printf一样来适用prinf来作为串口的输出。