저는 초보 프로그래머이며 여기에서 제 문제에 대한 조언을 감사드립니다.참조에 의한 C 문자열
나는 버퍼에있는 문자열을 가져 와서 첫 번째 2 ";"로 구분하여 세 개의 덩어리로 구문 분석하는 절차를 만들었습니다.
내가 시도한 것은 3 개의 char 포인터를 전달하여 구문 분석 된 문자열을 저장할 위치입니다. 하지만 호출 함수에서 얻은 것은 메모리 쓰레기입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
void parseomensaje(char buf[256], char **idNodo, char **idMensaje, char **mensaje){
char *temp;
temp=(char *)malloc(sizeof(buf));
strcpy(temp, buf);
printf("\ntemp adentro de la funcion = %s\n", temp);
idNodo = strtok (temp,";");
idMensaje = strtok (NULL, ";");
mensaje = strtok (NULL, "\0");
printf("\nADENTRO\nidNodo: %s\nidMensaje: %s\nmensaje: %s", idNodo, idMensaje, mensaje);
}
이 기능은이 방법으로 호출됩니다 parseomensaje 실행 버퍼가 원래의 문자열 만 idmen, idnod를 포함하고 남자는 비어 있습니다
char *idnod=NULL;
char *idmen=NULL;
char *men=NULL;
idnod=(char *)malloc(sizeof(buffer));
idmen=(char *)malloc(sizeof(buffer));
men=(char *)malloc(sizeof(buffer));
parseomensaje (buffer, &idmen, &idnod, &men);
후.
자습서에서 포인터 이름 자체는 포인터이므로 포인터는 참조로 매개 변수를 전달하는 것과 같지만 포인터의 포인터에 포인터 주소를 전달해야하는 문자열의 경우 ... I was reading it from here하지만 아직 해결하려고합니다.
필자 : 영어로 사과 드리며, 필자의 글을 실수로 지적하십시오. :)
문제의 해결책은 아니지만 'malloc'에 의해 반환 된 포인터를 캐스팅하지 마십시오 – Michael
버퍼의 크기는 얼마입니까? –