我想保存op=R和s=5,但我的代码显示垃圾输出 #包括 #包括 void main() { int N,i,s; char op; scanf(“%d”和“&N”); int a[N]; 对于(i=0;i
您需要使用尾随的我想保存op=R和s=5,但我的代码显示垃圾输出 #包括 #包括 void main() { int N,i,s; char op; scanf(“%d”和“&N”); int a[N]; 对于(i=0;i,c,C,您需要使用尾随的\n字符。最简单的方法是编写: #include <stdio.h> #include <string.h> void main() { int N,i,s; char op; scanf("%d",&N); int a[N]; for(i=0;i<N;i++) { scanf("%d",&a[i]); } scanf("%c %d",&op,
\n
字符。最简单的方法是编写:
#include <stdio.h>
#include <string.h>
void main()
{
int N,i,s;
char op;
scanf("%d",&N);
int a[N];
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
scanf("%c %d",&op,&s);
printf("%c %d",op,s);
}
您的确切输入和预期输出是什么?取决于您使用的是什么版本的C。C99支持它。许多编译器也支持它作为C89中的扩展。但它仍然可以在@Igor上工作?它在我的编译器上工作得非常好!:-DOf当然,使用用户控制(读:攻击者控制)创建VLA仍然是一个非常糟糕的主意大小。请问您指的是哪种标准C。(如果这句话有点讽刺的话,我很抱歉-这不是故意的。)
%C
格式说明符是scanf()
正常跳过前导空格的罕见例外之一(%[
是另一个)。
scanf(" %c %d",&op,&s); //notice the space before %c