所以我已经宣布了我的字符串 键[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++;
}
答案 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()的参考资料。