Я не понимаю, почему messageSize печатает 0 при вызове removeNode
, тем более что у него нет проблем с получением и печатью сообщения. Printf в insertNode
правильно печатает размер. Это может быть просто недосмотр. Не уверен.
struct qnode {
char message[256];
int mesglen;
struct qnode * next;
};
struct qheader {
struct qnode * front;
struct qnode * last;
};
struct qheader queue;
void insertNode() {
struct qnode newnode;
char * buffer = "hello";
strcpy(newnode.message, buffer);
printf("insert size: %ld\n", strlen(buffer)); // 5
newnode.mesglen = (int)strlen(buffer);
struct qnode * curnode = queue.front;
if (curnode == NULL) {
queue.front = &newnode;
queue.last = &newnode;
} else {
while (curnode->next != NULL) {
curnode = curnode->next;
}
curnode->next = &newnode;
queue.last = &newnode;
}
}
void removeNode() {
char message[256] = {0};
int messageSize;
if (queue.front == NULL) {
printf("queue empty\n");
} else {
strcpy(message, queue.front->message);
messageSize = queue.front->mesglen;
queue.front = queue.front->next;
printf("MESSAGE: %s\n", message);
printf("MESSAGESIZE: %d\n", messageSize);
}
}
int main() {
insertNode();
removeNode();
return 0;
}
И вывод:
insert size: 5
MESSAGE: hello
MESSAGESIZE: 0