如何从C字符串中的2个分隔符之间复制数据?

时间:2014-09-10 19:45:32

标签: c

我正在尝试复制str:字符之间的e字符。

我有char str[] = "192.169.0.1:12345e"; 我可以在'之前复制数据:'使用strrchr(),但是 如何复制12345:之间的e个字符?

2 个答案:

答案 0 :(得分:1)

看起来您正在尝试使用端口解析IP地址。如果是这样,为什么不使用:

char str[] = "192.169.0.1:12345e";
unsigned char ipAddress[4];
unsigned short int port;

if (sscanf(str, "%hhu.%hhu.%hhu.%hhu:%hu"
    , &ipAddress[0]
    , &ipAddress[1]
    , &ipAddress[2]
    , &ipAddress[3]
    , &port) >= 5)
{
    // use the data...
}

答案 1 :(得分:0)

它取决于逻辑。例如,如果找不到字符“e”该怎么办?

代码可以通过以下方式查找

if ( char *p = strchr( str, ':' ) )
{
   while ( *++p != 'e' && *p != '\0' ) *buffer++ = *p;
   *buffer = '\0';
}

char *p, *q;

if ( ( p = strchr( str, ':' ) ) && ( q = strchr( p, 'e' ) ) )
{
   while ( ++p != q ) *buffer++ = *p;
   *buffer = '\0';
}    

您可以使用strchr

代替strrchr