strtok を使用して区切り文字 " " を使用して文字列を分割しようとしていますが、セグメンテーション エラーが発生します。
char command[12];
char *instruction;
char *parameter_1;
char *parameter_2;
*instruction = strtok(command, " ,.-");
*parameter_1 = strtok(NULL, " ,.-");
*parameter_2 = strtok(NULL, " ,.-");
write(1,parameter_1,sizeof(parameter_1));
の時点で
編集: 要求に応じて、コンパイラの警告。どこにも int を使用していないので、混乱しています。
shell.c:51:16: warning: assignment makes integer from pointer without a cast [enabled by default]
shell.c:52:16: warning: assignment makes integer from pointer without a cast [enabled by default]
shell.c:53:16: warning: assignment makes integer from pointer without a cast [enabled by default]
Command: abd def ghj
Segmentation fault (core dumped)
編集2:
int prompt() {
// Get Input
char inputData[256];
int rid;
rid = read(0,inputData,256);
// Strip input
char command[rid];
int i;
for (i = 0; i<=rid-2; i++) {
command[i] = inputData[i];
}
command[rid-1] = '\0';
// Debug
// printf("\n-%c-%i\n",command[10],(int)sizeof(command));
// write(1,command,sizeof(command));
if (strcmp(command, "exit") == 0) {
break;
}
char *instruction;
char *parameter_1;
char *parameter_2;
instruction = strtok(command, " ");
parameter_1 = strtok(NULL, " ");
parameter_2 = strtok(NULL, " ");
write(1,instruction,sizeof(instruction));
//write(1,parameter_2,sizeof(parameter_2));
}
return 0;
}