小编Ama*_*kar的帖子

如何编写自定义printf?

我有个问题。我尝试进行自定义printf(),但是当我编译此代码时,输​​出似乎没有按预期出现。

#include <stdio.h>
#include <stdarg.h>
void print(char *, ...);

int main()
{
    char str[12]="World";
    char c='A';
    int i=100;
    print("Hello %s %c", str, c);
}

void print(char *c, ...)
{
    char *s;
    va_list lst;
    va_start(lst, c);
    while(*c!='\0')
    {
        if(*c!='%')
        {
            putchar(*c);
            c++;
            continue;
        }
        c++;
        switch(*c)
        {
        case 's': fputs(va_arg(lst, char *), stdout); break;
        case 'c': putchar(va_arg(lst, int)); break;
        }
    }    
}
Run Code Online (Sandbox Code Playgroud)

输出似乎是:Hello World 输出:Hello Worlds Ac 我不明白为什么会出现 's, c'。

c variadic-functions

3
推荐指数
1
解决办法
1万
查看次数

有什么神秘的事情发生?

我有一个与此代码相关的问题.

 #include <stdio.h>
 void main() 
 {
        char array[0];
        scanf("%s", array);
        printf("%s", array);
        return;
 } 
Run Code Online (Sandbox Code Playgroud)

当我在输入字段中输入数据时,它会在数组中存储并获得输出,但它的大小为0.

另一件事情是,当我输入假设'a'12次然后以某种方式控制到达scanf()接受输入并再次进入'a'再次12次控制到达scanf()并继续直到我输入少于12个字符.

如果输入超过12个字符,程序崩溃.

为什么会这样?

c arrays

-6
推荐指数
1
解决办法
92
查看次数

标签 统计

c ×2

arrays ×1

variadic-functions ×1