我有一个多维数组,在其中放置单词。之后,我要求用户删除一个单词。但不会删除。

#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/

10-13 06:18
查看更多