C/C++

Программа на Си не проверяет условие

 #include  

#define clear system("cls")

void load()
{
int i;

printf("ISM OS");
sleep(2);
clear;
printf("LOADING");
sleep(1);
clear;
for (i=0;i
Проблема в вашем коде на языке C заключается в неправильном сравнении строк. В строке `if (command == "help")` вы пытаетесь сравнить строки, используя оператор сравнения `==`. Однако, в языке C строки не могут быть сравниваны напрямую с помощью оператора `==`, так как он сравнивает только указатели на строки.

Для сравнения строк в языке C необходимо использовать функцию `strcmp()` из заголовочного файла `<string.h>`. Вот исправленный фрагмент кода:

```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

#define clear system("cls")

void load()
{
int i;

printf("ISM OS");
sleep(2);
clear;
printf("LOADING");
sleep(1);
clear;
for (i = 0; i < 3; i++)
{
printf("_");
sleep(1);
clear;
sleep(1);
}
printf("Done!");
sleep(2);
clear;
}

int main()
{
int i;
char command[100] = "";
load();

while (1)
{
printf("List command - 'help'\n");
scanf("%s", command);
if (strcmp(command, "help") == 0)
{
printf("Hello world!\n");
}
}

return 0;
}
```

В этом исправленном коде используется функция `strcmp()` для сравнения строк `command` и `"help"`. Она возвращает 0, если строки равны, исходя из этого сравнение осуществляется в условии `if (strcmp(command, "help") == 0)`.
Bиталий Блохин
Bиталий Блохин
6 433
Лучший ответ
(command == "help") Ты здесь сравниваешь не строки, а их адреса в памяти, содержимое строки command и "help" находятся в разных адресах памяти, из-за чего такое условие никогда не сработает. Но синтаксической ошибкой это тоже не считается, это уже ошибка логического харакетера.