我有这个程序可以读取一个字符串并将其分成三个部分。第一部分是操作码,第二部分是数据,第三部分是密钥。
使用示例:
put this is stackoverflow
opcode: put
data: this is
key: stackoverflow
代码主要:
int main(int argc, char **argv){
char command[MAX_MSG];
fgets(command, sizeof(command), stdin);
char *data;char *key;
command[strcspn (command, "\n")] = '\0';
char *aux_command_key = strdup(command);
char *aux_command_data = strdup(aux_command_key);
char *opcode = strtok(command, " ");
int success = 0;
if(strcmp(opcode, "put") == 0){
key = strdup(getKey(aux_command_key, opcode));
if(key == NULL){
printf("Invalid number of arguments.\n");
return -1;
}
else
data = getData(aux_command_data, opcode, key);
}
printf("opcode: %s\n",opcode);
printf("data: %s\n",data);
printf("key: %s\n",key);
free(aux_command_key);
free(aux_command_data);
}
我的问题是,当我在没有密钥的情况下运行程序时,它给我的结果是分段错误,而不是:“无效的参数数量”。我不知道为什么会这样。谢谢。