我的代码没有在离线编译器上提供正确的输出?
My code is not giving proper out put on offline compilers?
我对编码还很陌生,但我在使用所有编译器和 IDE 时遇到了一些问题。每当我尝试在 vs 代码或代码块中编译我的 c 代码时,它都不会提供适当的或特定的所需输出,当我在在线编译器上使用相同的代码时,我会得到完美的输出。
例如,`下面的代码在 VS Code 中打印 Hello 并退出,但在在线编译器中它的执行方式完全相同。我不知道这是编译器问题还是 IDE 问题,但如果有人知道,请回答。我只在c语言代码中遇到过这种情况,在c++中它工作正常。
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int info;
struct node *next;
} node;
typedef struct
{
node *front;
node *rear;
} queue;
void
createqueue (queue * q)
{
q->front = q->rear = NULL;
}
int
isempty (queue * q)
{
if (q->front == NULL)
return 1;
return 0;
}
void
enqueue (queue * q, int val)
{
node *p = (node *) malloc (sizeof (node));
p->info = val;
p->next = NULL;
if (isempty (q))
q->front = q->rear = p;
else
{
q->rear->next = p;
q->rear = p;
}
}
int
dequeue (queue * q)
{
int t;
t = (q->front)->info;
node *p = (node *) malloc (sizeof (node));
p = q->front;
if (q->front == q->rear)
q->front = q->rear = NULL;
else
q->front = (q->front)->next;
free (p);
return t;
}
int
queuefront (queue * q)
{
int t;
t = q->front->info;
return t;
}
void
traverse (queue * q)
{
node *p = (node *) malloc (sizeof (node));
printf ("\n Queue is: ");
p = q->front;
while (p != NULL)
{
printf ("=>%d ", p->info);
p = p->next;
}
}
int
main ()
{
int choice, info, d, val;
queue *q;
printf ("hello\n");
createqueue (q);
do
{
printf ("\n MENU \n");
printf ("\n 1.ENQUEUE \n");
printf ("\n 2.DEQUEUE \n");
printf ("\n 3.FRONT \n");
printf ("\n 4.TRAVERSE \n");
printf ("\n 5.EXIT \n");
printf ("\n ENTER YOUR CHOICE: ");
scanf ("%d", &choice);
switch (choice)
{
case 1:
printf ("enter the value");
scanf ("%d", &val);
enqueue (q, val);
break;
case 2:
if (isempty (q))
{
printf ("Queue is empty");
break;
}
info = dequeue (q);
printf ("%d ", info);
break;
case 3:
if (isempty (q))
{
printf ("Queue is empty");
break;
}
d = queuefront (q);
printf ("front= %d \n", d);
break;
case 4:
if (isempty (q))
{
printf ("Queue is empty");
break;
}
traverse (q);
break;
case 5:
exit (0);
break;
}
}
while (choice > 0 && choice < 5);
return 0;
}
`
queue *q; // uninitialized pointer
createqueue (q); // function tries to dereference it.
你必须q
指向某处。
您还应该学习如何使用 IDE 进行调试——调试器会立即告诉您程序退出的原因(实际上它没有退出,它崩溃了)。
我对编码还很陌生,但我在使用所有编译器和 IDE 时遇到了一些问题。每当我尝试在 vs 代码或代码块中编译我的 c 代码时,它都不会提供适当的或特定的所需输出,当我在在线编译器上使用相同的代码时,我会得到完美的输出。 例如,`下面的代码在 VS Code 中打印 Hello 并退出,但在在线编译器中它的执行方式完全相同。我不知道这是编译器问题还是 IDE 问题,但如果有人知道,请回答。我只在c语言代码中遇到过这种情况,在c++中它工作正常。
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int info;
struct node *next;
} node;
typedef struct
{
node *front;
node *rear;
} queue;
void
createqueue (queue * q)
{
q->front = q->rear = NULL;
}
int
isempty (queue * q)
{
if (q->front == NULL)
return 1;
return 0;
}
void
enqueue (queue * q, int val)
{
node *p = (node *) malloc (sizeof (node));
p->info = val;
p->next = NULL;
if (isempty (q))
q->front = q->rear = p;
else
{
q->rear->next = p;
q->rear = p;
}
}
int
dequeue (queue * q)
{
int t;
t = (q->front)->info;
node *p = (node *) malloc (sizeof (node));
p = q->front;
if (q->front == q->rear)
q->front = q->rear = NULL;
else
q->front = (q->front)->next;
free (p);
return t;
}
int
queuefront (queue * q)
{
int t;
t = q->front->info;
return t;
}
void
traverse (queue * q)
{
node *p = (node *) malloc (sizeof (node));
printf ("\n Queue is: ");
p = q->front;
while (p != NULL)
{
printf ("=>%d ", p->info);
p = p->next;
}
}
int
main ()
{
int choice, info, d, val;
queue *q;
printf ("hello\n");
createqueue (q);
do
{
printf ("\n MENU \n");
printf ("\n 1.ENQUEUE \n");
printf ("\n 2.DEQUEUE \n");
printf ("\n 3.FRONT \n");
printf ("\n 4.TRAVERSE \n");
printf ("\n 5.EXIT \n");
printf ("\n ENTER YOUR CHOICE: ");
scanf ("%d", &choice);
switch (choice)
{
case 1:
printf ("enter the value");
scanf ("%d", &val);
enqueue (q, val);
break;
case 2:
if (isempty (q))
{
printf ("Queue is empty");
break;
}
info = dequeue (q);
printf ("%d ", info);
break;
case 3:
if (isempty (q))
{
printf ("Queue is empty");
break;
}
d = queuefront (q);
printf ("front= %d \n", d);
break;
case 4:
if (isempty (q))
{
printf ("Queue is empty");
break;
}
traverse (q);
break;
case 5:
exit (0);
break;
}
}
while (choice > 0 && choice < 5);
return 0;
}
`
queue *q; // uninitialized pointer
createqueue (q); // function tries to dereference it.
你必须q
指向某处。
您还应该学习如何使用 IDE 进行调试——调试器会立即告诉您程序退出的原因(实际上它没有退出,它崩溃了)。