strstr截取字符串
一段字符串unsigned char cc1[128]的内容是“s1=4521 s2=4563 s3=8795 s4=7854”.
求C语言代码,截取s3的值。即如何取得这个字符串中s3后面8795的值。
我的代码,有问题。。。
char * p1, p2;
char p3[16];
p1 = strstr(cc1, "s3=");
if (p1 == NULL)
{
printf("the s3 is null.\n");
return 1;
}
else
{
p2 = strstr(p1, "s4=");
if (p2 == NULL)
{
printf("the input string is not valid!\n");
return 1;
}
memcpy(p3, p2, p2-p1);
}
[解决办法]
int main()
{
char data[20] = {0};//数组维数可根据实际情况加大
char * ptrS3 = strstr(cc1, "S3=");
if(!ptr)
{
return -1;
}
char * ptrBk = strchr(ptrS3 , '');
if(!ptrBk)
{
strcpy(data, ptrS3+2);
}
else
{
strncpy(data, ptrS3+2, (ptrBk-ptrS3-2);
}
printf("data: %s\n", data);
return 0;
}
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
char cc1[] = "s1=4521 s2=4563 s3=8795 s4=7854";
char* p = strstr(cc1, "s3");
char s3[10];
sscanf(p, "s3=%s", s3);
printf("%s\n", s3);
return 0;
}
int main(int argc,char**argv)
{
const char *s = "s1=4521 s2=4563 s3=8795 s4=7854";
char buf[128] = {0};
sscanf(s,"%*s %*s s3=%[^ ]",buf);
printf("%s\n",buf);
return 0;
}
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
int i;
char cc1[] = "s1=4521 s2=4563 s3=8795 s4=7854";
char* p = strstr(cc1, "8795");
char s[10];
strcpy(s,p);
for(i=0;i<strlen(s)&&s[i]!=32;i++)
printf("%c",s[i]);
printf("\n");
return 0;
}