I was implementing stack in c code worked fine while using %s
for inputting string without spaces, but failed when using %[^\n]
to take strings containing spaces.
CODE:
/* Stack implementation */
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5
typedef struct {
char title[50];
char author[50];
char subject[100];
int book_id;
} Book;
typedef Book dataType;
typedef struct {
dataType arr[MAX_SIZE];
int top;
} stack;
/* Function prototype */
Book input_book_details();
void initialize(stack *s);
/* main function */
int main(void) {
stack s;
initialize(&s);
push(&s, input_book_details());
push(&s, input_book_details());
push(&s, input_book_details());
return 0;
}
/*Function definitions */
Book input_book_details() {
Book out_book;
printf("Input Book Title: ");
scanf("%[^\n]", out_book.title);
//scanf("%s", out_book.title);
fflush(stdin);
printf("Enter Book Author Name: ");
scanf("%[^\n]", out_book.author);
//scanf("%s", out_book.author);
fflush(stdin);
printf("Enter Subject of Book: ");
scanf("%[^\n]", out_book.subject);
//scanf("%s", out_book.subject);
fflush(stdin);
printf("Enter Book ID: ");
scanf("%d", &out_book.book_id);
//fflush(stdin);
printf("\n");
return out_book;
}
void initialize(stack *s) {
s->top = -1;
}
OUTPUT:
case 1: with %s for strings without spaces
case 2: with %[^\n] for strings with spaces