알 수없는 유형의 인수를 알 수없는 양만큼 함수에 전달하는 방법을 알고 있습니다. 나는 이런 식으로 뭔가 의미 : 알 수없는 인수로 struct
char* plugins_entry(const char* data, ...);
가 지금은 그 기능에 몇 가지 다른 인수 외에 구조체를 전달하려고합니다. 두 파일 (main.c 및 plugins.c)에서 선언 된 동일한 구조체 (또는 정의 된?)가 있습니다. 그러나 main.c에서 전달 된 irc struct를 "필터링"하려고 시도하고 plugins.c의 irc 구조체에있는 데이터를 구문 분석하면 아무 것도 유용하지 않습니다. 함수를 호출 할 때 segementation 오류가 발생합니다.
이것은 중요한 main.c의에서 일부입니다 : 구멍 plugins.c 여기
struct irc_data {
char nick[32];
char user[32];
char host[64];
char chan[32];
char message[512];
int is_ready;
};
....
int main(int argc, char** argv) {
....
struct irc_data *irc = malloc(sizeof(struct irc_data));
....
(*lib_plugin)("r",irc); // call the function in plugins.c
....
}
그리고 : 그래서
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
struct irc_data{
char nick[32];
char user[32];
char host[64];
char chan[32];
char message[512];
int is_ready;
};
char* plugins_entry(const char* data, ...) {
int i;
struct irc_data *irc = malloc(sizeof(struct irc_data));
va_list args;
va_start(args, data);
for(i=0; data[i] != '\0'; ++i){
if(data[i] == 'r'){
irc = data[i];
}
}
va_end(args);
printf("\n\n------------------------\n");
printf("What we got here: %s\n",irc->nick);
printf("\n------------------------\n\n");
return "done";
}
, 내가 뭔가 잘못하고있는 중이 야한다는 확신 포인터.
여기서 도와 주실 수 있나요?
는~ Tectu
Fyi의 경우,'message' 이외의 다른 것에는 고정 크기의 버퍼를 사용하지 말아야합니다 (여기서 RFC에 따라 512가 필요합니다). 그 밖의 모든 것은 사용 된 ircd에 달려 있습니다. 닉스가 30 문자보다 길지는 않지만 사용자 이름/아이디가 10 문자보다 길지는 않지만 채널 이름은 32 문자보다 훨씬 길 수 있습니다. – ThiefMaster