Ich versuche, die Ausgabe dieses Programms richtig zu bekommen, aber ich bin nicht in der Lage. Das liegt daran, dass ich keine Zeichenfolge in der Funktion insert() nach der Zeile eingeben kann "printf (" Geben Sie die einzufügende Zeichenfolge ein = \ n ");" obwohl ich gets() mit der richtigen Header-Datei verwendet. Der Ausgang Ich bin immer so etwas wie dieses:Drucken der zirkulären Warteschlange in C
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
1
Enter the string to be inserted =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
1
Enter the string to be inserted =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
1
Enter the string to be inserted =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
The contents of the queue are
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
2
Deleted string is =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
The contents of the queue are
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
2
Deleted string is =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
The contents of the queue are
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
2
Deleted string is =
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
3
Queue is empty
Choice 1 : Enter element into Queue
Choice 2 : Delete element from Queue
Choice 3 : Display
Any other choice : Exit
Enter your choice
4
Das Programm, das ich geschrieben habe, ist wie folgt:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 5
int front = 0;
int rear = -1;
char queue_array[MAX][30];
void insert();
void Delete();
void display();
int main()
{
int choice;
while(1)
{
printf("Choice 1 : Enter element into Queue\n");
printf("Choice 2 : Delete element from Queue\n");
printf("Choice 3 : Display\n");
printf("Any other choice : Exit\n");
printf("Enter your choice\n");
scanf("%d", &choice);
switch(choice)
{
case 1: insert();
break;
case 2: Delete();
break;
case 3: display();
break;
default:exit(0);
} // End of switch()
} // End of while()
} // End of main()
void insert()
{
char add_item[30];
if((front == 0 && rear == MAX - 1) || (front != 0 && rear == front - 1))
printf("Queue is full\n");
else
{
printf("Enter the string to be inserted = \n");
gets(add_item);
if(rear == MAX - 1 && front != 0)
{
rear = 0;
strcpy(queue_array[rear], add_item);
}
else
{
rear = rear + 1;
strcpy(queue_array[rear], add_item);
}
}
}
void Delete()
{
char del_item[30];
if(front == 0 && rear == -1)
{
printf("Queue is empty\n");
return;
}
if(front == rear)
{
strcpy(del_item, queue_array[front]);
front = 0;
rear = -1;
}
else if(front == MAX - 1)
{
strcpy(del_item, queue_array[front]);
front = 0;
}
else
{
front = front + 1;
strcpy(del_item, queue_array[front]);
}
printf("Deleted string is =\n");
puts(del_item);
} // End of delete()
void display()
{
int i, j;
if(front == 0 && rear == -1)
{
printf("Queue is empty\n");
return;
}
printf("The contents of the queue are ");
if(front > rear)
{
for(i = 0; i <= rear; i++)
puts(queue_array[i]);
for(j = front; j < MAX - 1; j++)
puts(queue_array[j]);
}
else
{
for(i = front; i <= rear; i++)
puts(queue_array[i]);
}
printf("\n");
} // End of display()
ich wirklich jede mögliche Hilfe schätzen würde. Vielen Dank im Voraus :)
Danke, Mann! Ersetzen von Gets mit scanf() funktioniert. Trotzdem kann ich nur 80% der Testfälle für dieses Problem passieren! –