Я пытаюсь добавить в свою программу функциональность, которая получает определенное слово или предложение после определенного слова в C.
Например. Когда я пытаюсь ввести: «Скажи Hello World», программа напечатает только «Hello World».
Мой код работает так:
int main(){
char command;
do{
printf("MyOS>");
scanf("%s", &command);
if (strncmp(&command, "say", 3) == 0){
//enter code here
}
} while (strncmp(&command, "exit", 4));
return 0;
}
При запуске программа запрашивает входную строку, и в случае, если моя строка начинается с «сказать», я хочу, чтобы она выводила следующие слова/строку.
Единственная печать printf("MyOS>");. Опубликуйте настоящий код.
У тебя две проблемы
scanf("%s", &command);
здесь для переменной command
требуется буфер некоторого размера больше 1.Используйте, как показано ниже #define COMMAND_SIZE 1024 и объявить что-то вроде char command[COMMAND_SIZE] = {0}
scanf("%s", command);
, даже если команда имеет достаточный размер.Лучше использовать fgets(command, sizeof(command), stdin); для чтения строк из нескольких слов.
Короче говоря, вам нужно что-то вроде этого:
#include <stdio.h>
#include <string.h>
#define COMMAND_SIZE 512
int main(){
char command[COMMAND_SIZE] = {0};
do{
printf("MyOS>");
fgets(command,sizeof (command), stdin);
if (strncmp(command, "say", 3) == 0) {
printf(" %s\n", command+3);
}
} while (strncmp(command, "exit", 4));
return 0;
}
Примечание. Убедитесь, что вы выделили достаточный буфер для хранения вашей команды ввода, и введите ввод, который содержит менее COMMAND_SIZE символов, чтобы в нем было достаточно места для \n, иначе вы столкнетесь с проблемами с оставшимися \n символами.
Это сработало, большое спасибо за подробное объяснение, я пытаюсь самостоятельно изучать C, и такие ответы очень ценятся.
Вы не можете сохранить строку в один char как char command;. Это У.Б. Массив символов был бы более подходящим.