Получить ввод через запятую + проблема с получением ввода - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь получить ввод пользователя в следующей param1,param2,param3 проблема в том, что мне не разрешено использовать scanf. Я хочу получить эти 3 параметра в 3 разных переменных, но: - Я не знаю, как получить их, потому что они разделены запятой - Мне не удается хорошо использовать sscanf, и из того, что я видел, я не думаю, что fgets может мне помочь. Пример:

char a1, a2, a3;
printf("Enter data\n");
sscanf(input,"%[^,],%[^,],%[^,]", &a1, &a2, &a3);

Меня не просят ввести аргументы, которые я хочу. Я что-то упускаю здесь?

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Вы можете использовать fgets и sscanf, например:

char input[10];
char a1, a2, a3;

if (fgets(input, sizeof input, stdin))
{
    if (sscanf(input, "%c,%c,%c", &a1, &a2, &a3) == 3)
    {
        // ok - go on and use a1, a2, a3
    }
    else
    {
        // not good, the input doesn't match the pattern
    }
}
else
{
    // not good, didn't get any input
}
0 голосов
/ 06 апреля 2020

Если вам не разрешено использовать scanf, я сомневаюсь, что использование такого варианта, как sscanf, будет разрешено. Похоже, смысл упражнения в том, что вы научились вручную анализировать строку.

Для этого вы можете использовать несколько подходов. Каждый читает всю строку в памяти и затем анализирует ее. Другой - это посимвольный анализ и выполнение анализа одновременно с чтением.

Что бы вы ни делали, вы должны сделать al oop и отсканировать запятую , (чтобы узнать, когда go к следующему аргументу) и конечная строка \n один (для остановки в последнем), при этом копируя другие символы в каждую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...