我有个问题。我尝试进行自定义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'。
我有一个与此代码相关的问题.
#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个字符,程序崩溃.
为什么会这样?