xxaaoocc
@xxaaoocc
ruby, python

Ошибка с условными операторами c, как решить?

Я относительно не давно взялся за изучение Си.. Если пользователь введет "vasya" ему должно вывести petya, и наоборот.
Но в итоге получаю ошибку:
petyas.c: In function ‘main’:
petyas.c:9:17: warning: comparison between pointer and integer
    9 |    if (petyasya == "petya"){
      |                 ^~
petyas.c:11:23: warning: comparison between pointer and integer
   11 |    }else if (petyasya == "vasya");
      |                       ^~

Весь код :
#include <stdio.h>

int main () {
   int petyasya;

   printf ("petya or vasya");
   scanf ("%d", &petyasya);

   if (petyasya == "petya"){
      printf("vasya luche!");
   }else if (petyasya == "vasya");
     printf("llooll");

   return 0;
}

скажите что я делаю не так и в чём моя ошибка?
P.s это не c++ это обычный C
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Тут целая куча ошибок, связанных с фундаментальным непониманием и тупой копипастой примеров.

1. В С нет строкового сравнения, оператор if (petyasa == "petya") некорректен.
2. scanf ("%d", &petyasya);
введет код первого символа строки ('p' или 'v' в данном случае)

Хотя конечно код можно сделать рабочим даже не сильно его поменяв - ведь вводится-то 'p' или 'v' :)

#include <stdio.h>

int main () {
   int petyasya;

   printf ("petya or vasya");
   scanf ("%d", &petyasya);

   if (petyasya == 'p'){
      printf("vasya luche!");
   }else if (petyasya == 'v');
     printf("llooll");

   return 0;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Вы не разобрались с типами данных. int - число. Так что пользователь не введет ни васю ни петю. И сравнить число со строкой нельзя.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы