"tmp"で文字列を分割し、ポインタ "arr"の配列に入れようとしています。私は "arr"に "execv"を使用しようとしているのでこれをやっているが、 "arr"は最後にNULLがないのでできない。代わりに "(null)"があり、その内容を印刷するとセグメント化エラーが発生します。 "arr"をexecvで使用できるように正しく設定するには?おかげstrtok()に関する問題
#include<stdio.h>
#include<sys/wait.h>
#include<stdlib.h>
#include<string.h>
int main(){
char tmp[40] = "echo Hello World \n ";
char *arr[40];
char *token = strtok(tmp, " \n");
int index = 0;
while(token != NULL){
arr[index] = malloc(strlen(token) + 1);
arr[index] = token;
index = index + 1;
token = strtok(NULL, " \n");
}
for(int i = 0; i < 40; i++){
printf("%s \n", arr[i], arr[i]);
}
return 0;
}