私が間違っている場合は修正してください。ただし、次のような入力を読み込もうとしているようです。
PUT key value
コマンドラインからこれらのキーと値のペアを配列に保存します
char keys[25][50];
char values[25][50];
それがあなたが達成しようとしているものなら:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int i = 0;
char keys[25][50];
char values[25][50];
char buf[256], *bufcopy;
do{
fgets(buf, 255, stdin);
bufcopy = strtok(buf, " ");
if (strcmp(bufcopy, "PUT") == 0) {
bufcopy = strtok(NULL, " ");
strcpy(keys[i], bufcopy);
bufcopy = strtok(NULL, " ");
strcpy(values[i], bufcopy);
printf("server received pair %d - Key: %s\tValue: %s\n", i, keys[i], values[i]);
i++;
}
}while(i<25);
return 0;
}
これにより、キー/値配列の最後に到達するまで入力が読み込まれ、配列に保存されます。strtok() を連続して呼び出して、すべてのスペースで分割し、次の単語へのポインターを取得する必要があります (次の空白まで)。仕組みの詳細については、strtok()のリファレンスをご覧ください。