我有兩個多維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++;
}
請給我你的意見。
我有兩個多維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++;
}
請給我你的意見。
這真的取決於很多事情。
字符串malloc
'ed?如果他們是你應該free
他們並將指針設置爲NULL。然後當你通過清理好的數組時,你需要檢查字符串是否爲NULL
,然後再做任何你需要做的事情。
如果字符串是靜態的,或者如果您不想釋放它們,因爲它們在其他位置使用,則可以將它們設置爲NULL
或'\0'
。如果您選擇較晚,那麼您應該檢查strlen(s) == 0
或s[0] == '\0'
。
事情是,你也可以做,它可能並不意味着你選擇的東西太多。
編輯
我澄清一下。
你需要做什麼取決於你是否有一個char
(它是'\ 0'結尾)的數組或者是一個指向字符串的指針數組。
在第一種情況下,如果要「刪除」一個字符串,可以將數組中的所有字符更改爲'\ 0',或者只更改第一個字符。並使用strlen
或's [0] =='\ 0'來確定字符串是否爲空。
在第二種情況下,您應該釋放指針,並將其設置爲NULL
。要檢查字符串是否爲「空」,請測試NULL
。
區別在於C中指針和數組之間的關係,這不是微不足道的,請參閱here。
這些字符串是靜態的。所以,如果我的第5個元素是重複的,並且使它爲NULL,那麼我的其他9個元素是否會改變? – user2333234 2013-04-29 18:51:55
如果我將它分配給'\ 0'或NULL它拋出一個錯誤「賦值中的不兼容類型」請幫助。 – user2333234 2013-04-30 18:16:00
您缺少'}'來編譯代碼。循環體中'i ++'的意圖是什麼? – tehlexx 2013-04-29 18:32:45
''/ 0''更便攜。 – n0741337 2013-04-29 18:36:03
爲什麼地球上的'\ 0'會更便攜? – jbr 2013-04-29 18:41:25