Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I HAVE THE CODE BUT NOT WORKING FULLLY , IT IS BASICALLY NOT TAKING INPUT FROM K

ID: 3534880 • Letter: I

Question

I HAVE THE CODE BUT NOT WORKING FULLLY , IT IS BASICALLY NOT TAKING INPUT FROM KEYBOARD !!

#include <stdio.h>

#include <stdlib.h>


typedef char stack_element_t;


typedef struct stack_node_s{

stack_element_t character;

struct stack_node_s *prev;

struct stack_node_s *next;

} stack_node_t;


typedef struct {

stack_node_t *top;

stack_node_t *back;

} stack_t;


void push(stack_t *sp, stack_element_t c);

stack_element_t pop(stack_t *sp);

stack_element_t pop_bot(stack_t *sp);

int main(void) {


char ans;

char str;

FILE *file;


stack_t *s = malloc(sizeof (stack_t));

s->top = NULL;

s->back = NULL;


printf("Saadia Nahim> ");


//getchar();

file =fopen("test.txt","r");

if(file ==NULL){

printf("File doesn't exist. ");

exit(0);}


if(file){

while(fscanf(file,"%c" ,&str)!=EOF)

push(s,str);


fclose(file);

}


/*printf("How to print?");

scanf("%c", &ans);

printf(" Emptying stack test.txt: ");/*get a string*/

if(ans=='backwards'){

while(s->top != NULL) {

printf("%c", pop(s));

}}

else{

while(s->back != NULL){

printf("%c", pop_bot(s));

}

}

return(0);

}


void push(stack_t *sp, stack_element_t c) {


stack_node_t *newp;

newp = (stack_node_t *)malloc(sizeof (stack_node_t));

newp->character = c;

newp->prev = sp->top;

if(sp->top == NULL) {

sp->back = newp;

}

else

sp->top->next = newp;

sp-> top = newp;

}


stack_element_t

pop(stack_t *sp) {

stack_node_t *to_freep;

stack_element_t ans;

to_freep = sp->top;

ans = to_freep->character;

sp->top = to_freep->prev;

free(to_freep);


return(ans);

}



stack_element_t

pop_bot(stack_t *sp) {

stack_node_t *to_freep;

stack_element_t ans;

to_freep = sp->back;

ans = to_freep->character;

sp->back = to_freep->next;

free(to_freep);


return(ans);

}


Explanation / Answer

http://ideone.com/oUteSh