Прочитайте много разных ответов, но не могу найти способ это исправить, так что здесь у меня еще вопрос с практическими рекомендациями.
Так что я пытаясь «удалить» элемент из массива, который я создал. Как я понял, нет способа просто удалить элемент, скорее, вам нужно переместить исходящие элементы влево от массива, перезаписав, таким образом, ненужный элемент уже существующими элементами.
Пытался сделать именно это в моей функции removeToDoItem, но я получаю ошибку: присвоение выражения с типом массива. Следовал этому уроку https://codeforwin.org/2015/07/c-program-to-delete-element-from-array.html, но похоже, Я что-то упускаю.
#include <stdio.h>
#define Listsize 10
#define Stringsize 30
#include <string.h>
void printToDolist(char toDolist[][Stringsize], int placering)
{
for(int i= 0; i<placering; i++)
printf("%d - %s\n", i+1, toDolist[i]);
}
int addToDoItem(char toDolist[][Stringsize], int placering)
{
int i;
for( i=1; i<=3; i++)
{
printf(" Add a note: ");
fgets(toDolist[i], 30 , stdin);
}
return placering+i;
}
int removeToDoItem(char toDolist[][Stringsize], int placering)
{
int position,i;
printf(" Which element would you like to remove?: ");
scanf("%d", &position);
for(i=position-1; i< placering-1; i++)
{
toDolist[i] = toDolist[i+1];
}
return placering--;
}
int main ()
{
char toDolist[Listsize][Stringsize] = {[0]= "Buy candy \n"};
int placering = 0;
placering = addToDoItem(toDolist, placering);
printToDolist(toDolist, placering);
removeToDoItem(toDolist, placering);
return 0;
}