程序适用于 Dev-C++但不在海湾合作委员会
嘿大家。我为在线竞赛编写了这个程序。它在 Bloodshed 的 Dev-C++ 上运行良好,但在 GCC 上就崩溃了。本次大赛要求所有解决方案均基于GCC编译器。
它甚至不等待第二个输入。该程序在 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:~$
Hey all. I wrote this program for an online contest. It RUNS FINE on Bloodshed's Dev-C++ but it breaks down with GCC. The contest demands all solutions based on GCC compiler.
It doesn't even wait for the 2nd input. The program worked fine on Dev-C++. Please, help.
#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;
}
Output with GCC:
machine:~$ cc prog.c -lm
machine:~$ ./a.out
2
a 3 3
0 -1080493616
a 3 3
machine:~$
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
获取“testCases”后,使用“Enter”键,将“\n”添加到缓冲区。
您应该使用 getchar() 从缓冲区中获取“\n”。 for 循环中的 scanf 也是如此
你的固定代码:
顺便说一句,
像你一样定义数组,与 ANSI-C 不兼容,我不确定为什么 gcc 可以接受这个。您应该为此目的使用动态分配(例如 malloc())
After getting "testCases", you use the "Enter" key, which adds "\n" to the buffer.
You should use getchar() to get the "\n" out of the buffer. same thing for the scanf in the for loop
Your fixed code:
BTW,
defining arrays like you did, is not ANSI-C compatible, and I am not sure why gcc is ok with this. You should use dynamic allocation for that purpose (like malloc())