我有一个多维数组,在其中放置单词。之后,我要求用户删除一个单词。但不会删除。
#include<stdio.h>
void main ()
{
int i ;
int nbr ;
char n[50][50];
char d[50];
printf("Enter the number of word you want : \n");
scanf("%d",&nbr);
for(i=0; i < nbr ; i++)
{
printf("Enter words : \n");
scanf("%s",&n[i]);
}
printf("you have enter: \n");
for(i = 0; i < nbr ; i++)
{
printf("%s \n",n[i]);
}
printf("Wich word you want to remove : ? \n");
scanf("%s",&d);
for(i=0; i < nbr ; i++)
{
if(strcmp(n[i],d)==0)
{
n[i] = n[i+1] ;
i-- ;
}
}
printf("The rest of array is : \n");
scanf("%s",&n[i]);
}
[错误]分配给具有数组类型的表达式
最佳答案
尽管数组是使用C语言中的指针实现的,但是编译器将对它们进行不同的处理。正如您在自己的示例中看到的那样,行n [i] = n [i + 1]会导致您看到错误,因为n [i]是一个字符数组。
即使可以进行所需的分配,程序的逻辑仍然存在错误。如果您能够成功调用n [i] = n [i + 1],则将有效地将n [i + 1]中的内容复制两次。
相反,您可能想要将n [i + 1]复制到n [i],然后将n [i + 2]复制到n [i + 1],依此类推。这将很昂贵,您可能想使用链表,尽管这实际上取决于您要对该数据结构执行的其他操作。
关于c - 如何从C中的字符串数组中删除字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57299328/