5

ユーザーが入力した IP アドレスを変換して、ビット単位の操作と、構造体に既に格納されているアドレスを実行できるようにしようとしています。しかし、私の問題は、IP アドレスが変換されると、出力が常に 255.255.255.255 になることです。たとえば、10.0.0.1 または 192.16.2.1 を入力すると、常に 255.255.255.255 が返されます。

どんな助けでも大歓迎です。ありがとう

  {
        struct sockaddr_in sa;
        char ipinput[INET_ADDRSTRLEN];

        fputs("Enter an IP Address: ", stdout);
        fflush(stdout);
        fgets(ipinput, sizeof ipinput, stdin);
        inet_pton(AF_INET, ipinput, &(sa.sin_addr));
        inet_ntop(AF_INET, &(sa.sin_addr), ipinput, INET_ADDRSTRLEN);
        printf("IP Address = \%s\ \n", ipinput);
        }
4

2 に答える 2

5

によって返される値をチェックしていないのでinet_pton、失敗することに気づいたでしょう。結局のところ、によって残された改行は好きではありませんfgets。トリミング:

ipinput[strlen(ipinput) - 1] = 0;
于 2013-03-17T19:29:51.477 に答える
0

これに従ってみてください:

inet_ntop(AF_INET, (void *)hent->h_addr_list[0],servIP,16);

inet_pton(AF_INET, hostIP, &(sa->sin_addr));
于 2015-12-10T06:39:56.173 に答える