文字列を読み取り、それを 3 つの部分に分割するこのプログラムがあります。最初の部分はオペコード、2 番目はデータ、3 番目はキーです。
使用例:
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);
}
私の問題は、キーなしでプログラムを実行すると、「引数の数が無効です」ではなく、結果としてセグメンテーション違反が発生することです。なぜこれが起こっているのかわかりません。ありがとう。