解析 4 个单字节的 ip 地址字符串
我正在使用 C 在 MCU 上进行编程,我需要将包含 IP 地址的空终止字符串解析为 4 个单字节。我用 C++ 做了一个例子:
#include <iostream>
int main()
{
char *str = "192.168.0.1\0";
while (*str != '\0')
{
if (*str == '.')
{
*str++;
std::cout << std::endl;
}
std::cout << *str;
*str++;
}
std::cout << std::endl;
return 0;
}
此代码在新行中打印每个字节 192、168、0 和 1。现在我需要单个字符中的每个字节,例如字符 byte1、byte2、byte3 和 byte4,其中 byte1 包含 1,byte4 包含 192...或者在结构 IP_ADDR 中,然后返回该结构,但我不知道如何在C.:(
I'm programming on a MCU with C and I need to parse a null-terminated string which contains an IP address into 4 single bytes. I made an example with C++:
#include <iostream>
int main()
{
char *str = "192.168.0.1\0";
while (*str != '\0')
{
if (*str == '.')
{
*str++;
std::cout << std::endl;
}
std::cout << *str;
*str++;
}
std::cout << std::endl;
return 0;
}
This code prints 192, 168, 0 and 1 each byte in a new line. Now I need each byte in a single char, like char byte1, byte2, byte3 and byte4 where byte1 contains 1 and byte4 contains 192... or in a struct IP_ADDR and return that struct then, but I dont know how to do it in C. :(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以逐个字符地执行此操作,就像您问题中的 C++ 版本一样。
You can do it character-by-character, as does the C++ version in your question.
或者
or
我想提供更严格的版本来解析 ipv4 地址
I'd like to provide more strict version for parsing ipv4 address
在 C 中执行此操作的一个好方法是使用字符串标记生成器。在下面的示例代码中,字节保存在 bytes 数组中,并使用 printf 函数打印。希望有帮助
a nice way to do this in C is to use the string tokenizer. In the example code below the bytes are saved in the bytes array and are also printed with the printf function. Hope it helps