#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/C++
Программа на Си не проверяет условие
Проблема в вашем коде на языке 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)`.
Для сравнения строк в языке 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)`.
(command == "help") Ты здесь сравниваешь не строки, а их адреса в памяти, содержимое строки command и "help" находятся в разных адресах памяти, из-за чего такое условие никогда не сработает. Но синтаксической ошибкой это тоже не считается, это уже ошибка логического харакетера.
Похожие вопросы
- Программа на СИ. Циклы с постусловием и предусловием
- Помогите пожалуйста написать программу на Си
- Работа со структурами. Написать программу для СИ
- Помогите написать программу на СИ
- Чувствительны ли программы на Си к исправности железа
- Написать программы на СИ
- Завершается программа в Си
- Программа язык Си
- Написать программу на Си, помогите!!!
- Написать программу на Си