程序适用于Dev-C ++,但不适用于GCC

时间:2011-02-13 13:39:31

标签: c gcc

嘿所有人。我为在线比赛写了这个程序。它在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:~$

1 个答案:

答案 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())