analyse de l'adresse ip de chaîne de 4 octets

Je suis de la programmation sur un MCU avec le C et j'ai besoin d'analyser une chaîne se terminant par null qui contient une adresse IP sur 4 octets. J'ai fait un exemple avec C++:

#include <iostream>
int main()
{
    char *str = "192.168.0.1
#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;
}
"
; while (*str != '
#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;
}
'
) { if (*str == '.') { *str++; std::cout << std::endl; } std::cout << *str; *str++; } std::cout << std::endl; return 0; }

Ce code imprime 192, 168, 0 et 1 à chaque octet dans une nouvelle ligne. Maintenant j'ai besoin de chaque octet dans un seul char, comme le char byte1, byte2, octet 3 et byte4 où byte1 contient 1 et byte4 contient 192... ou dans une struct IP_ADDR et de retour que struct ensuite, mais je ne sais pas comment le faire en C. 🙁

Ce code n'a pas l'impression de "octets" avec les valeurs 192...: imprime des caractères ... 3 caractères pour 1 9 2 ...
Oh ... juste rendu compte de ce que l'utilisateur l'a demandé. En regardant le code avec les couts, je pensais qu'il voulait juste de l'imprimer. Il veut vraiment que les octets
Ajoutant explicitement \0 à la fin d'une chaîne de caractères littérale est très étrange. En initialisant char *a = "foo\0", vous faites un littéral de chaîne avec 5 caractères à deux octets nul à la fin.

OriginalL'auteur BETSCH | 2012-02-09