#include <stdint.h>
#include <stdarg.h>

extern int vsscanf(const char *, const char *, va_list);
extern int vsprintf(const char *, const char *, va_list);

int uart_scanf(const char *fmt, ...)
{
    int i = 0;
    unsigned char ch;
    char buf[80];
    va_list args;

    while(1) {
        ch = uart_getchar();
        uart_putchar(ch);
        if(ch == '\n' || ch == '\r') {
            buf[i] = '\0';
            break;
        } else {
            buf[i++] = ch;
        }
    }

    va_start(args, fmt);
    i = vsscanf(buf, fmt, args);
    va_end(args);
    uart_putchar('\r');
    uart_putchar('\n');
    return i;
}

int uart_printf(const char *fmt, ...)
{
    int i = 0;
    unsigned int n = 0;
    char buf[80];
    va_list args;

    va_start(args, fmt);
    n = vsprintf(buf, fmt, args);
    va_end(args);

    for(i = 0; i < n; ++i) {
        uart_putchar(buf[i]);
    }
    return n;
}

int main(void)
{
    char str[10];
    int a, b, c;
    int n;
    while((n = uart_scanf("%s%d%d%d", str, &a, &b, &c)) != -1) {
        uart_printf("%d Arguments. str = %s, a = %d, b = %d, c = %d\r\n", n, str, a, b, c);
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/lyuyangly/p/11261619.html

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐