をEXECVPするために、ユーザ入力配列を渡すことができません:これは私の入力機能である
int i,j,n,len,c;
char *buffer = 0;
size_t bufsize = 0;
ssize_t characters;
characters = getline(&buffer, &bufsize, stdin);
len = strlen(buffer);
buffer[len-1]='\0';
if (characters > 0)
{
char *end_str1;
char *token1 = strtok_r(buffer, ";", &end_str1);
int count = 0, wordcnt;
while (token1 != NULL)
{
char cmd[10][101];
memset(cmd,0,sizeof(cmd));
wordcnt = 0;
char *end_str2;
count++;
char *token2 = strtok_r(token1, " ", &end_str2);
while (token2 != NULL)
{
n = strlen(token2);
strncpy(cmd[wordcnt],token2,n);
wordcnt++;
token2 = strtok_r(NULL, " ", &end_str2);
}
cmd[wordcnt+1][0]='\0';
execvp(cmd[0],cmd);
token1 = strtok_r(NULL, ";", &end_str1);
}
}
free(buffer);
警告のみ互換性のないポインタ型があるが、私のCMD配列は、** ptrがあるので、私は何を理解していません間違っている。
私はそれを** kと等しくして、それをexecvpに渡そうとしました。うまくいきませんでした。 私はcmdを** cmdに変更しようとしましたが、何か問題があったと思います。
あなたはバッファに何を渡していますか? – Cyclotron3x3
私はプログラムに 'cd .. 'のようなコマンドを入力します。 pwd 'がバッファに格納される。 –