다음 코드에 문제가 있습니다 (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 가져 오기 SEG 오류 (나는 splitString에 대한 호출을 주석 경우의 printf가 오류를 가져옵니다) 둘.
내가하려는 것은 부분 문자열을 기반으로 문자열을 분할하는 것입니다. 이 함수는 첫 번째 arg로 전달 된 배열의 하위 문자열을 함수에 반환해야합니다. 나는 믿을 수 없을만큼 명백한 것을 간과하고 있다는 것을 압니다. 그러나 C 기술은 매우 녹슬니다. 모든 지침을 이해하십시오. 물론
를 할당해야합니다. 'strs'는 단위 화되어 있기 때문에,'ret [0]'에는 쓰레기가 포함되어 있습니다. 따라서'cp'는 쓰레기를 포함하고'* cp'는 오류를 일으킬 것입니다. –
감사합니다. 나는 머리에 자신을 때렸다. 나는 그것이 명백하다는 것을 알았다. PHP를 너무 많이 사용하고 있습니다! – mlewis54