2013-04-29 82 views
0

我有兩個多維char數組。他們可能有重複。我想清除第二個中的重複項。將第二個數組中的特定元素賦值爲NULL,將其清除,或者將其分配給「/ 0」。如何清除Char數組中的特定元素

for(i=0; i<10; i++){ 
    for(j=0; j<10; j++){ 
     if(!strcmp(a[x][i], b[x][j])){ 
     b[x][j]=NULL; 
    } 
    i++; 
} 

請給我你的意見。

+3

您缺少'}'來編譯代碼。循環體中'i ++'的意圖是什麼? – tehlexx 2013-04-29 18:32:45

+0

''/ 0''更便攜。 – n0741337 2013-04-29 18:36:03

+2

爲什麼地球上的'\ 0'會更便攜? – jbr 2013-04-29 18:41:25

回答

1

這真的取決於很多事情。

字符串malloc'ed?如果他們是你應該free他們並將指針設置爲NULL。然後當你通過清理好的數組時,你需要檢查字符串是否爲NULL,然後再做任何你需要做的事情。

如果字符串是靜態的,或者如果您不想釋放它們,因爲它們在其他位置使用,則可以將它們設置爲NULL'\0'。如果您選擇較晚,那麼您應該檢查strlen(s) == 0s[0] == '\0'

事情是,你也可以做,它可能並不意味着你選擇的東西太多。

編輯

我澄清一下。

你需要做什麼取決於你是否有一個char(它是'\ 0'結尾)的數組或者是一個指向字符串的指針數組。

在第一種情況下,如果要「刪除」一個字符串,可以將數組中的所有字符更改爲'\ 0',或者只更改第一個字符。並使用strlen或's [0] =='\ 0'來確定字符串是否爲空。

在第二種情況下,您應該釋放指針,並將其設置爲NULL。要檢查字符串是否爲「空」,請測試NULL

區別在於C中指針和數組之間的關係,這不是微不足道的,請參閱here

+0

這些字符串是靜態的。所以,如果我的第5個元素是重複的,並且使它爲NULL,那麼我的其他9個元素是否會改變? – user2333234 2013-04-29 18:51:55

+0

如果我將它分配給'\ 0'或NULL它拋出一個錯誤「賦值中的不兼容類型」請幫助。 – user2333234 2013-04-30 18:16:00

相關問題