これを理解できません、何か助けはありますか?これは strtok ではないと思います。私のコードだと確信しています。私は何を考えたのか理解できません。Get と Set が sigsevg を引き起こしています。num = strtof などの後に printf() を配置すると、num は正しくても、他のコマンドは正しく解釈されません。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
float height;
float width;
float length;
}Box;
void usage(void)
{
printf("\nUsage: [command] [parameter] [amount]\n");
printf("commands:\n\tSet\n\tGet\n");
printf("parameters:\n\theight\n\twidth\n\tlength\n");
}
int main()
{
usage();
Box box1 = {0,0,0};
int loop = 1;
float num;
char cp[65], *delims = " !@#$%^&*():;/><.,\\?\"";
char *tok1, *tok2, *tok3, *temp;
beginning:
while(loop)
{
//Read the command from standard input
char str[65];
fgets(str, 64, stdin);
str[64] = 0;
//Tokenize the string
strncpy(cp, str, 64);
tok1 = strtok(cp, delims);
tok2 = strtok(NULL, delims);
tok3 = strtok(NULL, delims);
//Check if tok3 is float
num = strtof(tok3, &temp);
if(num != 0)
{
}
else
{
usage();
goto beginning;
}
if(tok1 == 'Get' && tok2 == 'height')
{
printf("%f", box1.height);
}
else if(tok1 == 'Get' && tok2 == 'width')
{
printf("%f", box1.width);
}
else if(tok1 == 'Get' && tok2 == 'length')
{
printf("%f", box1.length);
}
else if(tok1 == 'Get')
{
usage();
goto beginning;
}
if(tok1 == 'Set' && tok2 == 'height')
{
box1.height = num;
printf("%f", box1.height);
}
else if(tok1 == 'Set' && tok2 == 'width')
{
box1.width = num;
}
else if(tok1 == 'Set' && tok2 == 'length')
{
box1.length = num;
}
else if(tok1 == 'Set')
{
usage();
goto beginning;
}
}
return 0;
}