このコード スニペットは次のとおりです。
printf("shell> ");
fgets(input, MAX_INPUT_SIZE, stdin);
//tokenize input string, put each token into an array
char *space;
space = strtok(input, " ");
tokens[0] = space;
int i = 1;
while (space != NULL) {
space = strtok(NULL, " ");
tokens[i] = space;
++i;
}
//copy tokens after first one into string
strcpy((char*)cmdargs, ("%s ",tokens[1]));
for (i = 2; tokens[i] != NULL; i++) {
strcat((char*)cmdargs, ("%s ", tokens[i]));
}
printf((char*)cmdargs);
入力:を使用echo hello world and stuff
すると、プログラムは次を出力します。
helloworldandstuff
strcat((char*)cmdargs, ("%s ", tokens[i]));
行は tokens[i] の文字列をそれに続くスペースで連結する必要があるように私には思えます。strcat は文字列の書式設定では機能しませんか? 何が起こっているのでしょうか?