簡體   English   中英

如何從C中的字符串數組中刪除字符串

[英]How to delete a string from an array of string in c

我有一個多維數組,在其中放置單詞。 之后,我要求用戶刪除一個單詞。 但不會刪除。

#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],依此類推。 這將很昂貴,您可能想使用鏈表,盡管這實際上取決於您要對該數據結構進行的其他操作。

 [Error] assignment to expression with array type 

在C中,無法分配數組。

您需要將源數組的內容復制到目標數組中。

對於以0結尾的char數組(又稱C字符串)的特殊情況,可以使用strcpy()函數執行此操作:

    strcpy(n[i], n[i+1]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM