![]() |
|
|
| Subject:
(C programming) Matching a single char to a string
Category: Computers > Programming Asked by: darsenault-ga List Price: $10.00 |
Posted:
19 Oct 2002 18:36 PDT
Expires: 20 Oct 2002 21:39 PDT Question ID: 85308 |
I am trying to write a function to take a char and return a string as
follows: the user will enter say: 4 + 3 and I need to turn the +
into "ADD" to store it in a structure element.
struct math_operation
{
int operand1;
char *operation; // this is where I need the + to be ADD
int operand2;
} message;
I've got the extraction and assignment of the two numbers working
fine.
I've got the "+" char extracted from the args:
char *tempOp;
tempOp = argv[2];
Now I need a function to convert the "+" to "ADD" (and "-" to "SUB",
"*" to "MUL" and "/" to "DIV") then put that string into its struct
member
message.operation = ??
The attempts I've made so far have just not worked. I think I've got a
pointer problem. So, what is the correct way to have a function take
the char + - * or / and return the respective string ADD SUB MUL or
DIV?
Thank you!
-David |
|
| There is no answer at this time. |
|
| Subject:
Re: (C programming) Matching a single char to a string
From: dancorcas-ga on 19 Oct 2002 18:52 PDT |
hi -
ultimately your parser will need to be more complicated than what you
have suggested here because getting the second character of an array
like this:
char *tempOp;
tempOp = argv[2];
may not work unless the input has been very strictly assembled - for
example:
if you use 4 + 3 it will work - but if the user types by accident: 4+3
it will not work - or consider 4+ 3 - etc...
anyway, here is one way of doing what you are asking for:
C does not have an "associate a character with a string" or a "map a
string to a string" native to the language - so you have to do this
manually - here is one way to do it:
char * LookupOperand(char X)
(
char *szRet = "";
switch (X)
{
case '-':
szRet = "SUB";
break;
case '+':
szRet = "ADD";
break;
case '*':
szRet = "MUL";
break;
case '/':
szRet = "DIV";
break;
default:
// error condition
// do something here
break;
}
return(szRet);
}
now you can just call this with your character - so, it would look
something like this:
char *Operand;
Operand = LookupOperand(argv[2][0]);
// or you could do this
char *tempOp;
tempOp = argv[2];
Operand = LookupOperand(*tempOp);
// these two operations are the same thing.
good luck.
Dan |
If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you. |
| Search Google Answers for |
| Google Home - Answers FAQ - Terms of Service - Privacy Policy |