Я новичок в C, и я пытаюсь работать через функцию внутри программы, которая удаляет целое число 5 из массива различной длины, а также сокращает затем массива для размещения. a[0]
- это элемент в массиве, который определяет длину этого массива. v
- это элемент, который будет удален из массива. В остальном коде, а также во всех других деталях это учитывается.Получение неожиданного результата при попытке удалить элемент из массива в C
Ниже приведен код, который я написал для функции:
void delete_set(int v, int a[])
{
int i;
int j;
for (i = 0; i < a[0]; i++)
if (a[i] == v)
{
for(j = i; j < a[0]; j++)
a[j] = a[j + 1];
a[0] = a[0] - 1;
}
}
Таким образом, я уверен, если вы должны были бы увидеть остальную часть кода вне этой функции для того, чтобы иметь смысл, но моя проблема в этом. Независимо от того, что я установил a[i] ==
(в выражении if), если длина массива, прочитанного внутри, является именно этим числом, я получаю неожиданный ответ. Однако для любого другого чтения в массиве я получаю ожидаемые (правильные) результаты. Любые изменения в кодировании должны выполняться внутри функции, так как именно эта проблема была представлена мне.
Спасибо, извините за длинный пост (если есть). Я не слишком привык к использованию форумов.
Есть ли [0] длина массива, включая [0]? –
'if (a [i] == v)' -> 'while (a [i] == v)' – BLUEPIXY