0

所以我已经将我的字符串声明为 keys[25][50]; 值[25][50];

我有一个先前的字符串,我将其拆分为空格,然后将值分别存储到键/值数组中。我想当我想将一个字符串分配给数组中的一个位置然后通过 printf() 打印出该值时,问题就来了;它始终为空。我在分配字符串或打印方面做错了吗?

strcpy(buff, buf);
bufcopy = strtok(buff, " ");
if (strcmp(job, "PUT") == 0) {
    //keys[i] = bufcopy;
    strcpy(keys[i], bufcopy);
    printf("server received: %s", keys[i]);
    i++;
}
4

1 回答 1

0

如果我错了,请纠正我,但您似乎正在尝试读取如下输入:

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()的参考。

于 2013-11-05T09:35:32.557 回答