I think you should reexamine the control flow in your program (all those gotos are a red flag). If I understand correctly, you may "open" some sort of bracketed scope with (, [, or { and close it with ), ], or }, respectively. Your loop should be along the lines of:
foreach char in my input string
(i.e. until the current char is '\0'; your current loop goes the full length of your string buffer regardless of how long the user input is)
if the current character opens a scope
push it onto the stack
if the current character closes a scope
make sure it is symmetric to the scope opener on top of the stack
if it does match, pop the stack
else brackets are mismatched
Get that to work first, then you can begin considering the /* */ tokens.
EDIT: The way I've introduced here assumes the rule that a scope-closing token must correspond to the innermost open scope: