strcmp не будет правильно оценивать операторы if [duplicate]

На этот вопрос уже есть ответ:

strcmp в строке, прочитанной с помощью fgets 6 ответов
#include <stdio.h>
#include <math.h>
#include <string.h>
#define size 7

int computeN(char s1[])
    {
        int n=-1;

        if(strcmp(s1, "black") == 0)
        {
            n = 0;
        }
        else if (strcmp(s1, "brown") == 0)
        {
            n = 10;
        }
        else if (strcmp(s1, "red") == 0)
        {
            n = 20;
        }
        else if (strcmp(s1, "orange") == 0)
        {
            n = 30;
        }   
        else if (strcmp(s1, "yellow") == 0)
        {
            n = 40;
        }
        else if (strcmp(s1, "green") == 0)
        {
            n = 50;
        }
        else if (strcmp(s1, "blue") == 0)
        {
            n = 60;
        }
        else if (strcmp(s1, "violet") == 0)
        {
            n = 70;
        }
        else if (strcmp(s1, "grey") == 0)
        {
            n = 80;
        }
        else if (strcmp(s1, "white") == 0)
        {
            n = 90;
        }
        printf("%d\n", n);
        return n;
    }

int computeN2(char s2[])
    {
        int n1=-1;  

        if(strcmp(s2, "black") == 0)
        {
            n1 = 0;
        }
        else if (strcmp(s2, "brown") == 0)
        {
            n1 = 1;
        }
        else if (strcmp(s2, "red") == 0)
        {
            n1 = 2;
        }
        else if (strcmp(s2, "orange") == 0)
        {
            n1= 3;
        }   
        else if (strcmp(s2, "yellow") == 0)
        {
            n1 = 4;
        }
        else if (strcmp(s2, "green") == 0)
        {
            n1 = 5;
        }
        else if (strcmp(s2, "blue") == 0)
        {
            n1 = 6;
        }
        else if (strcmp(s2, "violet") == 0)
        {
            n1 = 7;
        }
        else if (strcmp(s2, "grey") == 0)
        {
            n1 = 8;
        }
        else if (strcmp(s2, "white") == 0)
        {
            n1 = 9;
        }
        printf("%d\n", n1);
        return n1;
    }

int computeExponent(char s3[])
{
        int  exp=0;

        if(strcmp(s3, "black") == 0)
        {
            exp = 1;
        }
        else if (strcmp(s3, "brown") == 0)
        {
            exp = 10;
        }
        else if (strcmp(s3, "red") == 0)
        {
            exp = 100;
        }
        else if (strcmp(s3, "orange") == 0)
        {
            exp = 1000;
        }   
        else if (strcmp(s3, "yellow") == 0)
        {
            exp = 10000;
        }
        else if (strcmp(s3, "green") == 0)
        {
            exp = 100000;
        }
        else if (strcmp(s3, "blue") == 0)
        {
            exp = 1000000;
        }
        else if (strcmp(s3, "violet") == 0)
        {
            exp = 10000000;
        }
        else if (strcmp(s3, "gray") == 0)
        {
            exp = 100000000;
        }
        else if (strcmp(s3, "white") == 0)
        {
            exp = 1000000000;
        }
        printf("%d\n", exp);
        return exp;
    }

int computeResistance(int x, int y, int z)
{
    int omega = ((x+y) * z);
    return omega;
}


int main(void)
{
    char color_codes[10][7] = {"black","brown","red","orange","yellow","green","blue","violet","gray","white"};
    char s1[7], s2[7], s3[7];
    int  n, n1, choice;

    printf("Enter the colors of the resistor's three bands, beginning with\n");
    printf("the band nearest the end. Type the colors in lowercase letters\n");
    printf("only, NO CAPS\n");

    printf("Band 1 =>\n");              //prints prompts for bands 
    fgets(s1, size, stdin);             //stores band 1 in s1

    printf("Band 2 => \n");             //prints prompt 
    fgets(s2, size, stdin);             //stores band 2 in s2

    printf("Band 3 => \n");             //prints prompt 
    fgets(s3, size, stdin);             //stores band 3 in s3


    printf("Resistance value: %d\n", computeResistance(computeN(s1), computeN2(s2), computeExponent(s3)));  //computes resistance 

    return (0);                                             //make the exit 
}

Строки хранятся правильно; проблема заключается в том, что внутри функций не найдено правильное значение в сравнении, чтобы найти сопротивление с помощью алгоритма. Если пользователь вводит 'red', 'red', 'red', значения n, n1 и exp будут равны -1, -1,0. Что может быть причиной этого

Ответы на вопрос(2)

Ваш ответ на вопрос