我有這個C函數,它試圖告訴我子字符串是否包含在一個字符串中。在C中我的子字符串函數內存問題?
int sub_string(char parent [1000], char child [1000]){
int i;
i = 0;
int parent_size = (int) strlen(parent);
int child_size = (int) strlen(child);
char tempvar [child_size];
int res;
res = 1;
while(i<(parent_size - child_size + 1) && res != 0){
strncpy(tempvar, parent + i, child_size);
if(strcmp(tempvar, child)==0){
res = 0;
}
i++;
memset(tempvar, 0, child_size);
}
memset(tempvar, 0, sizeof(tempvar));
return res;
}
現在奇怪的是,當我通過一個字符串「HOME_DIR =/tmp目錄/」和「HOME_DIR」它返回一個0在第一時間輪,但之後,我再次調用此函數,它返回一個1說它沒有找到它!
我猜這是一個內存問題,但我不知道在哪裏,我將不勝感激任何幫助。
你在使用什麼編譯器?一些編譯器可能在使用變量分配數組時遇到問題:char tempvar [child_size]; – Matthieu 2010-10-06 16:51:40
我認爲GCC與GNU Make 3.81。我是C新手,所以不確定我是否給了你正確的信息! – Kay 2010-10-06 17:01:09