подсказка все еще находится не в том месте. Появляется после ввода строки в той же строке, что и следующее приглашение. Смотрите редактирование на мой вопрос.

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

Все работает нормально, если количество строк жестко закодировано, но добавлениеscanf чтобы позволить пользователю решать проблемы. Вот код:

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>

#define LENGTH  20 // Maximum string length.

int main(void)
{
    int index, numStrings = 0;
    char **stringArray;
    printf("Input the number of strings that you'd like to sort: ");
    assert(scanf("%d", &numStrings) == 1);
    stringArray = (char **)malloc(numStrings * sizeof(char *));

    for (index = 0; index < numStrings; index++)
    {
        stringArray[index] = (char *)malloc(LENGTH * sizeof(char));
        assert(stringArray[index] != NULL);
        printf("Input string: ");
        assert(fgets(stringArray[index], LENGTH, stdin) != NULL);
    }

    // Sort strings, free allocated memory.

    return 0;
}

А вот как выглядит консоль:

Input the number of strings that you'd like to sort: 3
Input string: Input string: foo
Input string: bar

Он пропускает первую итерацию цикла, в результате чего в начале массива появляется пустая строка. У меня вопрос, почему он это делает, и как я могу это исправить?

Вот как выглядит консоль со строкой формата"%d\n" перешел кscanf:

Input the number of strings that you'd like to sort: 3
foo
Input string: Input string: bar
Input string: baz

Итак, я могу ввести все строки, но первая подсказка для строки находится не в том месте.

Ответы на вопрос(2)

Ваш ответ на вопрос