Still i am not convinced.Which will the problem if we remove this line?
the problem, I don't know. But I noticed a difference in the last three breaks. There's a ".0" after some chars.
without s[1] = '\0'
Code:
gdb -q reversepolish
Reading symbols from /home/ethereal/C/DataStructures/reversepolish...done.
(gdb) break 99
Breakpoint 1 at 0x40086f: file reversepolish.c, line 99.
(gdb) break 108
Breakpoint 2 at 0x4008e5: file reversepolish.c, line 108.
(gdb) break 111
Breakpoint 3 at 0x400901: file reversepolish.c, line 111.
(gdb) run
Starting program: /home/ethereal/C/DataStructures/reversepolish
1.5 2.5 + 4.0 *
Breakpoint 2, getop (s=0x7fffffffe640 "1.5 ") at reversepolish.c:108
108 s[i] = '\0';
(gdb) cont
Continuing.
Breakpoint 3, getop (s=0x7fffffffe640 "1.5") at reversepolish.c:111
111 return NUMBER;
(gdb) cont
Continuing.
Breakpoint 2, getop (s=0x7fffffffe640 "2.5 ") at reversepolish.c:108
108 s[i] = '\0';
(gdb) cont
Continuing.
Breakpoint 3, getop (s=0x7fffffffe640 "2.5") at reversepolish.c:111
111 return NUMBER;
(gdb) cont
Continuing.
Breakpoint 1, getop (s=0x7fffffffe640 "+.5") at reversepolish.c:99
99 return c; /* not a number */
(gdb) cont
Continuing.
Breakpoint 2, getop (s=0x7fffffffe640 "4.0 ") at reversepolish.c:108
108 s[i] = '\0';
(gdb) cont
Continuing.
Breakpoint 3, getop (s=0x7fffffffe640 "4.0") at reversepolish.c:111
111 return NUMBER;
(gdb) cont
Continuing.
Breakpoint 1, getop (s=0x7fffffffe640 "*.0") at reversepolish.c:99
99 return c; /* not a number */
(gdb) cont
Continuing.
Breakpoint 1, getop (s=0x7fffffffe640 "\n.0") at reversepolish.c:99
99 return c; /* not a number */
with s[1] = '\0';
Code:
/home/ethereal/C/DataStructures/reversepolish
1.5 2.5 + 4.0 *
Breakpoint 2, getop (s=0x7fffffffe640 "1.5 ") at reversepolish.c:108
108 s[i] = '\0';
(gdb) cont
Continuing.
Breakpoint 3, getop (s=0x7fffffffe640 "1.5") at reversepolish.c:111
111 return NUMBER;
(gdb) cont
Continuing.
Breakpoint 2, getop (s=0x7fffffffe640 "2.5 ") at reversepolish.c:108
108 s[i] = '\0';
(gdb) cont
Continuing.
Breakpoint 3, getop (s=0x7fffffffe640 "2.5") at reversepolish.c:111
111 return NUMBER;
(gdb) cont
Continuing.
Breakpoint 1, getop (s=0x7fffffffe640 "+") at reversepolish.c:99
99 return c; /* not a number */
(gdb) cont
Continuing.
Breakpoint 2, getop (s=0x7fffffffe640 "4.0 ") at reversepolish.c:108
108 s[i] = '\0';
(gdb) cont
Continuing.
Breakpoint 3, getop (s=0x7fffffffe640 "4.0") at reversepolish.c:111
111 return NUMBER;
(gdb) cont
Continuing.
Breakpoint 1, getop (s=0x7fffffffe640 "*") at reversepolish.c:99
99 return c; /* not a number */
(gdb) cont
Continuing.
Breakpoint 1, getop (s=0x7fffffffe640 "\n") at reversepolish.c:99
99 return c; /* not a number */
(gdb) cont
Continuing.
16