阅读了很多不同的答案,但是找不到解决此问题的方法,因此在这里我还有一个“如何做”的问题。
因此,我试图从我创建的数组中“删除”一个元素。据我所知,没有办法简单地删除一个元素,而是需要将行进元素移到数组的左侧,从而用现有元素覆盖不需要的元素。
试图在我的removeToDoItem-function中做到这一点,但是我得到的错误是:分配给具有数组类型的表达式。一直在遵循本教程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;
}
for(i=position-1; i< placering-1; i++) { toDolist[i] = toDolist[i+1]; // wrong: cannot assign to an array // toDolist[i] is an array of 30 characters }
你要
for (i = position - 1; i < placering - 1; i++) {
strcpy(toDolist[i], toDolist[i + 1]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句