
#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
}
//---------------------------------------------------------------------------
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)