Я пишу программу, которая будет вычислять значения резисторов на основе цветового ввода от пользователя. Функция, которая дает мне проблемы, предназначена для получения цвета в виде строки и возврата соответствующего целочисленного значения.C - Неожиданный вывод функции (базовый/начальный код)
Однако, несмотря на различные изменения, он возвращает только значение из инструкции else
, которая является всего лишь сообщением main()
о том, что строка не соответствует ни одному из цветов.
Незаконченный код ниже:
#include <stdio.h>
#include <math.h>
int values123(char c[10]);
void main(void)
{
int bands = 0;
char band1[10];
char band2[10];
char band3[10];
char band4[10];
char band5[10];
printf("Number of colour bands: ");
scanf_s("%i", &bands);
printf("\nBand 1: ");
scanf_s("%s", band1);
if (values123(band1) == 100)
{
printf("Colour is invalid!");
}
fflush(stdin);
printf("\nBand 2: ");
scanf_s("%s", band2);
fflush(stdin);
printf("\nBand 3: ");
scanf_s("%s", band3);
fflush(stdin);
printf("\nBand 4: ");
scanf_s("%s", band4);
fflush(stdin);
if (bands == 5)
{
printf("\nBand 5: ");
scanf_s("%s", band5);
fflush(stdin);
}
getch();
}
int values123(char c[10])
{
if (strcmp(c, "black") == 0)
return (0);
else if (strcmp(c, "brown") == 0)
return (1);
else if (strcmp(c, "red") == 0)
return (2);
else if (strcmp(c, "orange") == 0)
return (3);
else if (strcmp(c, "yellow") == 0)
return (4);
else if (strcmp(c, "green") == 0)
return (5);
else if (strcmp(c, "blue") == 0)
return (6);
else if (strcmp(c, "violet") == 0)
return (7);
else if (strcmp(c, "grey") == 0)
return (8);
else if (strcmp(c, "white") == 0)
return (9);
else
return (100);
}
Пожалуйста, не стесняйтесь сообщать мне о любых ошибках, которые я делаю, являются ли они связаны с вопросом или нет, так как я уверен, что я делаю тонну!
Кстати, это не вопрос о домашнем задании (насколько он похож на один), я студент-электроника, и я был в настроении практиковать С, создав программу, связанную с тем, что я изучаю:)
Спасибо!
Вы не можете сравнивать строки, используя '==' - вам нужно взглянуть на некоторые из функций сравнения строк C. – PeterJ
'scanf_s ("% s ", & band5);' должно быть 'scanf_s ("% s ", band5);' –
Почему нет амперсандов? Что он делает точно? Иногда мои scanf не работают без него:/ И thx PeterJ, я посмотрю на это! Спасибо за очень быстрые ответы каждый: o –