各位大哥牛人,帮小弟个忙
1.下面的函数存在那些错误,为什么?
Int add(int m,int n)
{
Printf( "login add\n ");
Int sum = m+ n;
Printf( "sum is %d ",sum);
Printf( "logout add \n ");
Return sum;
}
啥问题啊?
2.变量unsigned int addr 保存的是IP地址 ,如何叫IP地址转换成字符川发到一个字符数组里char ip[16];
3.如何定义包含多行的宏?
[解决办法]
1.下面的函数存在那些错误,为什么?
函数怎么写成大写了?写错了?
int add(int m,int n)
{
printf( "login add\n ");
int sum = m+ n;
printf( "sum is %d ",sum);
printf( "logout add \n ");
return sum;
}
[解决办法]
3.如何定义包含多行的宏?
在每一行的末尾加上 \
[解决办法]
3.如何定义包含多行的宏?
看这个例子:
#defineIF_ENQUEUE(ifq, m) { \
(m)-> m_nextpkt = 0; \
if ((ifq)-> ifq_tail == 0) \
(ifq)-> ifq_head = m; \
else \
(ifq)-> ifq_tail-> m_nextpkt = m; \
(ifq)-> ifq_tail = m; \
(ifq)-> ifq_len++; \
}
[解决办法]
第2个问题说的清楚一些,举个例子出来,比如你给一个ip地址,然后给一个字符串形式的ip地址
[解决办法]
unsigned int addr = ???
char ip[16];
sprintf(ip, "%d ",addr);
这样行吗?
[解决办法]
int ip;
char strip[16]={0};
char *p=(char *)&p;
sprintf(strip, "%d.%d.%d.%d ",p[0],p[1],p[2],p[3]);
[解决办法]
01:
函数printf, 关键字:return.
02:
第一步:初始化一个sockaddr_in sin 变量将addr 赋值给sin.sin_addr.S_un.S_addr
第二步调用函数: inet_ntoa;
函数原型:char * inet_ntoa (struct in_addr in ); //This function converts a network address into a string in dotted format.
char* szIP = inet_ntoa(*(in_addr*)&sin);
参考源代码:
http://blog.csdn.net/andylin02/archive/2007/01/17/1485694.aspx
03:
上面的朋友已经回答的很好。
希望对你有所帮助。
:)