编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h> 

// int* generateRange(char* code) {
//     int start, end;
//     sscanf(code, "%d-%d", &start, &end); // 解析字符串获取起始和结束数值

//     int size = end - start + 1;
//     int* result = (int*)malloc(size * sizeof(int)); // 动态分配数组内存

//     for (int i = 0; i < size; i++) {
//         result[i] = start + i; // 将起始和结束之间的整数存入数组
//     }

//     return result;
// }

// char *strReplace(char *str, char *oldstr, char *newstr)
// {
//   int j = 0;
//   char bstr[strlen(str)+10];  // 转换缓冲区

//   memset(bstr, 0, sizeof(bstr));
//   for (j = 0; j < strlen(str); j++)
//   {
//     if (!strncmp(str + j, oldstr, strlen(oldstr)))
//     {  // 查找目标字符串
//       strcat(bstr, newstr);
//       j += strlen(oldstr) - 1;
//     }
//     else
//     {
//       strncat(bstr, str + j, 1);  // 保存一字节进缓冲区
//     }
//   }

//   strcpy(str, bstr);
//   return str;
// }
// int GetAimNum(char* str, char aim)
// {
// 	int str_len = strlen(str);
// 	int count = 0;
// 	for (int i = 0; i < str_len; i++)
// 	{
// 		if (*str == aim)
// 			count++;
// 		str++;
// 	}
// 	return count;
// }

// void Replace(char* str, char *oldchar, char* newstr)
// {
// 	int i = strlen(str);//i指向有效字符串的位置即'\0'字符前
// 	int newstr_len = strlen(newstr);//求取 替换字符串 的有效长度
// 	int count = GetAimNum(str, oldchar);//获取字符串中的替换字符长度
// 	int j = i + count * (newstr_len - 1);
// 	//j指向末尾字符加要替换字符数乘(替换字符串长度-1)
// 	while (i >= 0)//如果i小于0说明已经遍历整个字符串
// 	{
// 		if (str[i] != oldchar)//如果i下标对于的字符不是要替换的字符就将它向后移
// 		{
// 			str[j--] = str[i--];
// 		}
// 		else//如果是就用替换字符串替换要替换字符
// 		{
// 			for (int z = newstr_len - 1; z >= 0; z--)
// 			{
// 				str[j--] = newstr[z];
// 			}
// 			i--;
// 		}
// 	}
// }

// int main() {
//     char code[64] = "1234%567%%89";
//     char code2[] = "233";
//     char tr069en = 0;
//     tr069en = atoi(tr069en);
//     printf("tr069en = %d\n", tr069en);

//     // int* range = generateRange(code);
//     char buffer[64] = {0};
//     Replace(code, '%', "%%");
//     printf("code=%s\n", code);
//     // int a = 4, b = 6;
//     // swap_int1(a,b);
//     // print("a=%d, b=%d\n", a, b);
//     // int size = 20 - 10 + 1;
//     // for (int i = 0; i < size; i++) {
//     //     printf("%d ", range[i]);
//     // }

//     // free(range); // 释放动态分配的数组内存

//     return 0;
// }

typedef unsigned char  UINT8;
typedef unsigned short UINT16;
typedef unsigned int   UINT32;

typedef struct {
	UINT32   IpAddress;
	UINT32   Mask;
	UINT32   Gateway;
	UINT32   PrimaryDns;
	UINT32   SecondaryDns;
	UINT32   CurrentAddress;
	UINT32   CurrentMask;
	UINT32   CurrentGateway;
	UINT32   CurrentPrimaryDns;
	UINT32   CurrentSecondaryDns;

} __attribute__((aligned)) MIB_TABLE_IP_HOST_CFG_DATA_T;

int mibget(MIB_TABLE_IP_HOST_CFG_DATA_T *entry){

    MIB_TABLE_IP_HOST_CFG_DATA_T test;
    test.IpAddress = 23439552;

    if(entry == NULL) {
        printf("entry == NULL\n");
    }
	MIB_TABLE_IP_HOST_CFG_DATA_T *newRowIpHost = entry;

    newRowIpHost->IpAddress = test.IpAddress;
    return 0;
}
int main() {
    MIB_TABLE_IP_HOST_CFG_DATA_T Entry;
    char buf[32] = {0};
    ulong addr = 0;

    char buf2[32] = {0};
    strcpy(buf2, "192.168.101.1");
    addr = inet_addr(buf2);
    printf("addr = %d\n", addr);

    mibget(&Entry);
    inet_ntop(AF_INET, (void *)&Entry.IpAddress, buf, sizeof(buf));
    printf("Entry.IpAddress = %d\n", Entry.IpAddress);
    printf("Entry.IpAddress buf= %s\n", buf);

    printf("Entry.Mask = %d\n", Entry.Mask);
    return 0;
}