在c中打印字符串数组的值

时间:2013-11-05 05:16:50

标签: c string variable-assignment cstring

所以我已经宣布了我的字符串 键[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++;
}

1 个答案:

答案 0 :(得分: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()的参考资料。