我正在尝试复制str
和:
字符之间的e
字符。
我有char str[] = "192.169.0.1:12345e";
我可以在'之前复制数据:'使用strrchr()
,但是
如何复制12345
和:
之间的e
个字符?
答案 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