У меня есть следующий код:
bool get_command(char *cmd){
char *cm = (char*)malloc(strlen(cmd));
strcpy(cm,cmd);
const char *tok = strtok(cm," ");
if(!tok)
return false;
if(!strcmp(tok,"MULTIPLY"))
{
printf("WORKING!\n");
return true
}
....
int main(void){
while(1){
char *input = NULL;
char buf[MAX_LINE_LENGTH] = {0};
int read;
size_t len;
read = getline(&input, &len, stdin);
if (-1 != read){
printf("Input: %s\n", input);
sprintf(buf, "%s", input);
get_command(input);
} else {
printf("No line read\n");
}
free(input);
}
return 0;
}
Когда я запускаю код и ввожу MULTIPLY
, он возвращается
ввод: УМНОЖИТЬ
ЖЕТОН: УМНОЖИТЬ
Однако это не распечатывает WORKING
. Может ли кто-нибудь объяснить, почему это не работает должным образом?
tok
после вызоваstrtok
. - person tivn   schedule 02.05.2015tok
случайно не равно"MULTIPLY\n"
? - person D.Shawley   schedule 02.05.2015char *p = malloc(strlen(q) + 1); strcpy(p, q);
, наchar *p = strdup(q);
. - person D.Shawley   schedule 02.05.2015