메시지 큐를 이용하는 소스인데여

points
메시지큐를 이용하여 송신하는 쪽의 소스인데여 굵은 표시한 부분대로 하면 키보드로 입력받게 되는데
키보드로 입력받지 않고 제가 변수를 미리 설정해서(ex : char c;) 사용하게 된다면 어떤 식으로
굵은 부분의 소스를 어떻게 고쳐야 하나요.
제가 고친 부분은 아래와 같은데 이게 맞나요?
char c;
fgets(buffer, BUFSIZ, c);
strcpy(some_data.some_text, buffer);
////////////////////////////////////////////////////////////////////////////////
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX_TEXT 512
struct my_msg_st {
long int my_msg_type;
char some_text[MAX_TEXT];
};
int main()
{
int running = 1;
struct my_msg_st some_data;
int msgid;
char buffer[BUFSIZ];
msgid = msgget((key_t)1234, 0666 | IPC_CREAT);
if (msgid == -1) {
fprintf(stderr, "msgget failed with error: %d\n", errno);
exit(EXIT_FAILURE);
}
while(running) {
printf("Enter some text: ");
fgets(buffer, BUFSIZ, stdin);
some_data.my_msg_type = 1;
strcpy(some_data.some_text, buffer);
if (msgsnd(msgid, (void *)&some_data, MAX_TEXT, 0) == -1) {
fprintf(stderr, "msgsnd failed\n");
exit(EXIT_FAILURE);
}
if (strncmp(buffer, "end", 3) == 0) {
running = 0;}
}
exit(EXIT_SUCCESS);
}

points
char c; fgets(buffer,
fgets()의 세번째 파라미터가 char가 아닌 char*라야 맞겠죠.
그래서 다음과 같이 해야 오류가 없습니다.
동작에는 문제가 없을 것 같은데 좋은 코드는 아니군요.
그리고 받는 쪽에서 char라는 것을 명확히 안다면 문제가 안되겠지만 어떤 사이즈인지 알수 없고 문자열의 사이즈가 바뀐다면 다음과 같이 하는 것도 좋습니다.
이렇게 하면 문자열 다음의 NULL값도 복사 될테니 큐 값을 가져가는 쪽에서도 좋을 것 같습니다.