我試圖編寫一個簡單的shell接口,它接受用戶輸入(通過字符),並通過指針指向一個指針*(確切地說argv是如何工作的)。這裏是我的代碼:令牌化C中的用戶輸入(存儲在** arg中)?
int i = 0;
for (i = 0; i < wordCount; i++)
printf("Word %i: %s\n", i, argvInput[i]);
argvInput的值[I]是什麼最後輸入分配是所有連接:通過argvInput
char input[100];
char **argvInput;
char ch;
int charLoop = 0;
int wordCount = 0;
argvInput = malloc(25 * sizeof(char *));
while((ch = getc(stdin))) {
if ((ch == ' ' || ch == '\n') && charLoop != 0) {
input[charLoop] = '\0';
argvInput[wordCount] = malloc((charLoop + 1) * sizeof(char));
argvInput[wordCount] = input;
charLoop = 0;
wordCount++;
if (ch == '\n') {
break;
}
} else if (ch != ' ' && ch != '\n') {
input[charLoop] = ch;
charLoop++;
} else {
break;
}
}
如果我循環。所以,如果我輸入: 「幸福的日子即將到來」,環路的輸出是:
Word 0: soon
Word 1: soon
Word 2: soon
Word 3: soon
Word 4: soon
我不知所措。顯然,每個循環覆蓋以前的值,但我盯着屏幕,無法弄清楚爲什麼...
你可能想看看進入['strtok'](http://en.cppreference.com/w/c/string/byte/ strtok)功能。如果您搜索,有很多示例可用。 – 2013-02-22 01:47:30
這最終將成爲一個shell腳本(隨着學期的進展而發展)。由於它最終必須處理管道和報價,因此strtok不會長期工作。 – 2013-02-22 02:31:15