我遇到以下代碼的問題(我不知道splitString函數是否工作,因爲我在調用它時遇到seg錯誤)。該代碼是:C數組傳遞
#include <stdio.h>
//
// Split String
//
int splitString(char** ret,char* instr, char* fence,int max) {
char* p;
int count=0;
char* sinstr;
char* cp;
int i=0;
while(i<max) {
cp=ret[i];
p=fence;
sinstr=instr;
while(1) {
if (*p=='\0') {
*cp='\0';
instr=sinstr;
break;
}
if (*p==*sinstr) {
p++;
sinstr++;
continue;
} else {
*cp=*instr;
cp++;
instr++;
break;
}
}
i++;
}
*cp='\0';
return count;
}
int main (int argc, char* const argv[]) {
char *strs[128];
char* in="test.txt";
splitString(strs,in,".",2);
printf("fn: %s, ext: %s\n",strs[0],strs[1]);
}
無論是splitString函數調用和printf的GET賽格故障(printf的得到的錯,如果我註釋掉調用splitString)。
我想要做的是根據子字符串拆分字符串。該函數應該返回作爲第一個參數傳遞給函數的數組中的子串。我知道我忽略了一些非常明顯的東西,但是我的C技巧非常生疏。欣賞任何指導。
您儘快打這個。由於'strs'是單位化的,'ret [0]'包含垃圾。因此'cp'包含垃圾,'* cp'會導致錯誤。 –
謝謝。我只是把自己打在腦袋裏。我知道這很明顯。使用PHP太多了! – mlewis54