解析 4 个单字节的 ip 地址字符串

BET*_*SCH 2 c parsing pic18 mplab-c18

我正在使用 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;
}
Run Code Online (Sandbox Code Playgroud)

此代码在新行中打印每个字节 192、168、0 和 1。现在我需要单个字符中的每个字节,例如字符 byte1、byte2、byte3 和 byte4,其中 byte1 包含 1,byte4 包含 192...或者在结构 IP_ADDR 中,然后返回该结构,但我不知道如何在C。 :(

pmg*_*pmg 5

您可以逐个字符地执行此操作,就像您问题中的 C++ 版本一样。

/* ERROR CHECKING MISSING */
#include <ctype.h>
#include <stdio.h>
int main(void) {
    char *str = "192.168.0.1", *str2;
    unsigned char value[4] = {0};
    size_t index = 0;

    str2 = str; /* save the pointer */
    while (*str) {
        if (isdigit((unsigned char)*str)) {
            value[index] *= 10;
            value[index] += *str - '0';
        } else {
            index++;
        }
        str++;
    }
    printf("values in \"%s\": %d %d %d %d\n", str2,
              value[0], value[1], value[2], value[3]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)