求一C语言大神在线帮我写一段程序‘’请编写程序实现根据主机名获得IP地址信息,并将信息保存在文件中‘’

求一C语言大神在线帮我写一段程序‘’请编写程序实现根据主机名获得IP地址信息,并将信息保存在文件中‘’,第1张

#include <stdio.h>

#include <string.h>

#include <malloc.h>

#include <arpa/inet.h>

#include <netinet/in.h>

#include <netdb.h>

using namespace std

const char* dns_parse(const char* host) {

struct addrinfo hints

struct addrinfo *result = NULL

struct addrinfo *rp = NULL

memset(&hints, 0, sizeof(struct addrinfo))

hints.ai_family = AF_UNSPEC /* Allow any */

hints.ai_socktype = 0 /* Any */

hints.ai_flags = 0/* No flags */

hints.ai_protocol = 0 /* Any protocol */

int error = getaddrinfo(host, NULL, &hints, &result)

if (error != 0) {

if (result) {

freeaddrinfo(result)

}

return ""

}

const char* ip = ""

const char* ipv6 = ""

const char* ipv4 = ""

char tmp[INET6_ADDRSTRLEN * 2] = {0}

for (rp = resultrp != NULLrp = rp->ai_next) {

if (rp->ai_family == AF_INET &&strlen(ipv4) == 0) {

const char *ret = inet_ntop(rp->ai_family,

&((struct sockaddr_in*)rp->ai_addr)->sin_addr,

tmp, (INET6_ADDRSTRLEN * 2))

if (ret != NULL) {

ipv4 = ret

}

} else if (rp->ai_family == AF_INET6 &&strlen(ipv6) == 0) {

const char *ret = inet_ntop(rp->ai_family,

&((struct sockaddr_in6*)rp->ai_addr)->sin6_addr,

tmp, (INET6_ADDRSTRLEN * 2))

if (ret != NULL) {

ipv6 = ret

}

}

}

if (result) {

freeaddrinfo(result) // Not needed anymore

}

if (strlen(ipv6) >0) {

ip = ipv6

} else if (strlen(ipv4) >0) {

ip = ipv4

} else {

return ""

}

return ip

}

void save_to_file(char* data, int len, const char* file_path) {

FILE *fp = fopen(file_path, "wb")

if (!fp) {

return

}

fwrite(data, sizeof(char), len, fp)

fclose(fp)

}

int main() {

const char* ip = dns_parse("www.baidu.com")

printf("%s\n", ip)

int len = strlen(ip)

char* data = (char*)malloc(len + 1)

memcpy(data, ip, len)

data[len] = '\0'

save_to_file(data, len + 1, "a.txt")

free(data)

return 0

}

//---------------------------------------------------------------------------

#include

<stdio.h>

#include

<string.h>

#include

<ctype.h>

#define

PFE

"pas.dat"

/*保存密码的文件*/

#define

DEFPAS

"123456"

/*初始密码*/

void

setpass(void)

{

FILE

*fp=NULL

char

pas[20]

printf("是否设置新密码?(Y/N):")

fflush(stdin)

if

(tolower(getchar())=='y')

{

printf("请输入新密码:\

")

scanf("%20s",pas)

fp=fopen(PFE,"wb")

fwrite(pas,sizeof(char),strlen(pas),fp)

fclose(fp)

printf("已经设置新密码,下次请使用新密码登录\

")

}

fflush(stdin)

}

int

main(void)

{

FILE

*pf

char

pass[20]=DEFPAS,ch[20]

if

(pf=fopen(PFE,"rb"))

{

fread(pass,sizeof(char),20,pf)

fclose(pf)

}

printf("请输入密码:")

scanf("%s",ch)

if

(!strcmp(ch,pass))

{

printf("登录成功\

")

setpass()

printf("欢迎使用本系统\

")

getchar()

}

else

printf("密码错误,登录失败!\

")

return

0

}

//---------------------------------------------------------------------------


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12128175.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存