在线编译器(在线 gdb)工作正常,而 windows 10 cmd 上的 g++ 和 gcc 在比较字符串时不起作用

online compiler(online gdb)works correctly while g++ and gcc on windows 10 cmd doesn't work when comparing strings

当我在网站“在线 gdb”中比较 2 个字符串时,如果比较相等则给出 10,如果不相等则不给出 10(它给出 10 而不是 0 已经很奇怪了,但它有效,所以我不在乎)。但是因为我尝试用 g++ 或 gcc 编译我的代码(我也尝试用 -g 来编译)它给出了 -1 或 1,或者只有 1,但从来没有 0。感谢所有阅读这段代码并帮助我的人。

#include <stdio.h>
#include <math.h>
#include <string.h>

int main()
{
    char v1q[55], v2q[55], v3q[55], v4q[55];
    float v1, v2, v3, v4, vr, min, max;
    int comparison;
    int v3b = 1;

printf("Per la prima banda non esiste l'oro e l'argento;\nPer la seconda banda non esiste l'oro e l'argento;\nPer la terza banda non esiste il bianco;\nPer la quarta banda esistono SOLO il bianco, oro e argento.\n\n");

printf("Prima cifra: ");
fgets(v1q, sizeof(v1q), stdin);


if(strcmp(v1q, "nero") == 0)
{
    printf("\nNon esiste un valore per il nero, per la prima banda");
}
if(strcmp(v1q, "marrone") == 0)
{
    v1 = 10;
}
if(strcmp(v1q, "rosso") == 0)
{
    v1 = 20;
}
if(strcmp(v1q, "arancione") == 0)
{
    v1 = 30;
}
if(strcmp(v1q, "giallo") == 0)
{
    v1 = 40;
}
if(strcmp(v1q, "verde") == 0)
{
    v1 = 50;
}
if(strcmp(v1q, "blu") == 0)
{
    v1 = 60;
}
if(strcmp(v1q, "viola") == 0)
{
    v1 = 70;
}
if(strcmp(v1q, "grigio") == 0)
{
    v1 = 80;
}
if(strcmp(v1q, "bianco") == 0)
{
    v1 = 90;
}
if(strcmp(v1q, "oro") == 0)
{
    printf("\nNon esiste un valore per l'oro, per la prima banda");
}
if(strcmp(v1q, "argento") == 0)
{
    printf("\nNon esiste un valore per l'argento, per la prima banda");
}
comparison = strcmp(v1q, "marrone");
printf("%d", comparison);
}

最后我只是用scanf替换了fgets,现在可以了...我不知道为什么我一开始就没有这样做