Он while
говорит мне, что сравнения не существует
#include <stdio.h>
int main() {
int n, e, op, edad;
char sexo[1], res[2];
n = 0;
edad = 0;
do {
n = n + 1;
printf("Edad del conductor\n");
scanf("%d", &e);
printf("Sexo de conductor F= femenino, M= masculino\n");
scanf("%s", sexo);
printf("1 si es capital y 2 otra parte del estado\n");
scanf("%d", &op);
if (edad < 30) {
edad = edad + e;
}
printf("desea ingresar otro usuario? Si o No?\n");
scanf("%s", res);
} while (res != "No");
edad = edad / n;
printf("%d", edad);
return 0;
}
Дело в том, что в C вы не можете сравнивать строки с помощью операторов
==
, и!=
они не будут сравнивать только указатели обоих.Вы должны использовать функцию для сравнения, например
strcmp
Функция возвращает значение
0
, когда они равны.Из ваших комментариев, если вам нужно манипулировать одним символом, вам не нужно использовать функции для строки , и вы можете изменить свою программу примерно так:
Обратите внимание, что
res
теперь он объявленchar
без[]
.scanf
теперь используйте формат%c
для чтения одного символа и'N'
используйте одинарные кавычки , чтобы'
не"
указывать, что это не строка.Для этого удобно использовать такие функции, как:
Но если мы хотим видеть массив как таковой, массивы вообще...
Массивы в целом сравниваются значение за значением, индекс за индексом.
В C строки символов заканчиваются символом '\0', который указывает, что в его позиции (и от ее позиции) в строке больше нет символов.
Если мы хотим реализовать функцию на C для сравнения строк символов в массивах символов, я предлагаю этот код.
Примечание: Кстати, во время ввода с клавиатуры имейте в виду, что scanf не поддерживает пробелы, если мы хотим, чтобы пробелы поддерживались, мы должны использовать
gets(arrayDeCaracteres);