它甚至不等待第二次输入。该程序在Dev-C ++上运行良好。请帮忙。
#include <stdio.h>
int testCases;
void runPgm()
{
scanf("%d", &testCases);
int array[testCases][2];
char start[testCases];
int i;
for(i=0; i<testCases; i++)
{
scanf("%c %d %d", &start[i], &array[i][0], &array[i][1]);
}
for(i=0; i<testCases; i++)
{
printf("%c %d %d\n", start[i], array[i][0], array[i][1]);
}
}
int main() {
runPgm();
return 0;
}
GCC输出:
machine:~$ cc prog.c -lm
machine:~$ ./a.out
2
a 3 3
0 -1080493616
a 3 3
machine:~$
答案 0 :(得分:1)
获取“testCases”后,使用“Enter”键,将“\ n”添加到缓冲区。
您应该使用getchar()从缓冲区中获取“\ n”。 for循环中的scanf也是一样的东西
您的固定代码:
#include <stdio.h>
int testCases;
void runPgm()
{
scanf("%d", &testCases);
getchar();
int array[testCases][2];
char start[testCases];
int i;
for(i=0; i<testCases; i++)
{
scanf("%c %d %d", &start[i], &array[i][0], &array[i][1]);
getchar();
}
for(i=0; i<testCases; i++)
{
printf("%c %d %d\n", start[i], array[i][0], array[i][1]);
}
}
int main() {
runPgm();
return 0;
}
顺便说一句, 像你一样定义数组,不兼容ANSI-C,我不确定为什么gcc对此有好处。您应该为此目的使用动态分配(如malloc())