我正在尝试获取字符串的一部分。
我有以下代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char mystring[]="The quick brown fox jumps over the lazy dog";
char word1[]="The";
char * posb,pose;
char * word2;
int b,e,n;
n=memcmp(mystring, word1, sizeof(word1)-1);
if (n==0) printf("the first word is found!\n");
posb=strchr(mystring,' '); // posb will be a pointer to the first character
b=posb-mystring+1;
printf("posb -> %d\n",posb);
printf("b -> %d\n",b);
pose=strchr(mystring+b+1,' '); // pose will be a pointer to the second character
printf("calc e\n");
e=pose-sizeof(mystring)+1;
printf("pose -> %s\n",pose);
printf("e -> %d\n",e);
word2 = (char*) malloc (sizeof(char)*(e-b));
memcpy(word2, posb, sizeof(word2));
printf("%s:%i:%i:%i\n",word2, b, e, e-b);
free (word2);
问题是获取第二个单词并将其存储在 word2 中。为此,我尝试使用strchr
来定位空间。但是我第二次使用strchr
我需要一个偏移量来找到第二个空间。我尝试了以下方法:
pose=strchr(mystring+b+1,' ');
pose=strchr(&mystring[b+1],' ');
变量b
和e
应该包含空格字符在mystring
. 最终word2
应该包含。
另一种解决方案是使用循环“遍历”字符串,但这会欺骗函数。quick
strchr