2017-06-15 37 views
-1

在C中如何搜索字符串是否存在於字符串數組中,如果不存在,則將其添加到字符串數組。檢查數組中是否存在字符串,如果不存在,則將其添加到數組中C

在我的代碼,我得到一個文件路徑 -

char *file_path; 

我需要檢查,如果它已經存在的字符串(FILE_PATH數組)的數組,如果它的存在,然後返回其他添加此FILE_PATH到字符串數組。

有人可以幫我用C代碼嗎?

+0

這是什麼問題? –

+0

歡迎來到StackOverflow。 請參考[遊覽], 學習問好問題stackoverflow.com/help/how-to-ask, 做個[mcve]。一個MCVE應包含各種樣本輸入(說明所有方面)和期望的輸出。 – Yunnosch

+0

我不能拿出C中的確切代碼。我有僞代碼,並試圖拿出C代碼。 – riju

回答

0
for(int i=0; i<dim; i++){ 
    if(strcmp(file_path,array[i])==0) return 0; 
} 

//if it exits the loop it means that it did not find the string 

array=realloc(array,(dim+1)*sizeof(char*)); 
strcpy(array[dim],file_path); 

這應該沒問題。請對數組,字符串和函數進行研究。 I.e strncpy()實際上比簡單的strcpy()更好,如果你願意改進代碼的話。 也看看函數來操縱動態內存(Malloc,calloc,realloc ...) 我還假設你確實聲明瞭數組正確的方式(作爲char *數組[暗]]。 你也應該檢查各種函數的返回值,但我會讓你做你的研究,因爲它看起來像你剛剛開始使用C編程。

+0

將realloc()的結果直接分配給被重新分配的對象的指針始終是錯誤的; realloc()可以在發生錯誤時返回空指針,現在你有內存泄漏並丟失數據。首先分配一個臨時指針,並在重新分配'array'之前檢查成功的重新分配。 –

+0

@DavidBowling的權利,實際上我指定代碼應該被解釋爲一個準則,並且錯誤管理留給誰來執行整個事情。我覺得這篇文章的作者不太能夠理解c代碼。 – BattiestFawn66

相關問題