我对C字符串非常困惑。
我有一个包含18个元素的字符串数组: char user [18] [50] ,其中每个元素的字符串格式为“XXXX:YYYY:ZZZZ”< /强>
但我只需要ZZZZ,我想将它们存储在 char z [18] [50] 而不是 char * z 中以保持一致性(也不是很清楚char *)
所以我用strtok分割字符串
char *split;
char *temp;
for (i=0; i<18; i++){
temp = user[i];
split = strtok(temp, ":");
//Wanna do something here
}
所以我猜每次迭代 split 是一个指向字符串数组的指针,元素为: XXXX 和 YYYY 和 ZZZZ 分开。
我怎样才能获得ZZZZ并将它们存储到 char z [18] [50] ?
答案 0 :(得分:1)
然后你再两次打电话给strtok来获取它,
for (i=0; i<18; i++){
temp = user[i];
split = strtok(temp, ":");
split = strtok(NULL, ":");
split = strtok(NULL, ":");
// Now split is pointing to ZZZZ
//Wanna do something here
}
答案 1 :(得分:1)
rindex
function is more suitable:
#include <stdio.h>
#include <string.h>
#include <strings.h>
int main() {
char *split;
char buffer[256];
char temp[] = "XXXX:YYYYY:ZZZZZ";
split = rindex(temp, ':') + 1;
strcpy(buffer, split);
printf("%s\n", buffer);
return 0;
}