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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.