我目前正試圖讓我的C程序讀取來自用戶的Unix參數。我到目前爲止搜索了這個網站,但我一直無法弄清楚我做錯了什麼 - 雖然我承認我的指針實現技能是相當有限的。C - 使用execvp和用戶輸入
以下是我現在的代碼;我一直在與沒有運氣的指針搞混了。錯誤也是說我需要使用const * char,但是我在其他例子中看到* char可以由用戶輸入。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
main()
{
char args[128];
//User input
printf("> ");
fgets(args, 128, stdin);
execvp(args[0], *args[0]);
}
我得到的錯誤如下:
smallshellfile.c: In function ‘main’:
smallshellfile.c:13:21: error: invalid type argument of unary ‘*’ (have ‘int’)
smallshellfile.c:13:5: warning: passing argument 1 of ‘execvp’ makes pointer from integer without a cast [enabled by default]
/usr/include/unistd.h:575:12: note: expected ‘const char *’ but argument is of type ‘char’
有誰知道這個問題可能是什麼?
不要忘記,命令名在'argv [0]'中出現,在'argv [1]'中出現第一個參數,在'argv [2]'中出現空指針。 – 2012-02-14 00:19:14
@JonathanLeffler如果我正確地閱讀了這個問題,他不想傳遞任何參數(程序名除外),所以NULL應該在'argv [1]'中。 – asaelr 2012-02-14 00:24:09
[0]只是因爲我用完了想法。我擺脫了他們,並做出了修改 - 我編譯時的錯誤消失了,但執行程序在被調用時不會執行任何操作 - 即如果我嘗試ls,它只會終止程序。 – limasxgoesto0 2012-02-14 00:25:13