首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

strstr截取字符串解决方案

2013-01-08 
strstr截取字符串一段字符串unsigned char cc1[128]的内容是“s14521 s24563 s38795 s47854”.  求C语言

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;


[解决办法]
sscanf就可以搞掂了,不需要strstr
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;
}

[解决办法]
字符串比对,找到"s3"然后取等号后面的数据(到空格结束)
62708807
职业C/C++交流群
以前很火的,后来被群主清空了
现在找人
[解决办法]
#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;
}

热点排行