私は単純なシェルのようなインターフェイスを作成しようとしています。これは、ユーザー入力を (char で) 受け取り、ポインター * へのポインターを介して格納します (argv の動作とまったく同じです)。これが私のコードです:
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;
}
}
argvInput をループすると、次のようになります。
int i = 0;
for (i = 0; i < wordCount; i++)
printf("Word %i: %s\n", i, argvInput[i]);
argvInput[i] のすべての値は、最後の入力割り当てが何であれです。したがって、「幸せな日々がもうすぐ来る」と入力すると、ループの出力は次のようになります。
Word 0: soon
Word 1: soon
Word 2: soon
Word 3: soon
Word 4: soon
私は途方に暮れています。明らかに、各ループは以前の値を上書きしていますが、私は画面を見つめていて、理由がわかりません...