而我们在vc这款工具中,如果在运行的过程中添加相应参数。工程-》设置-》调试-》程序变量 在这里添加我们要输入的程序变量 分别对应了argv[1] argv[2].....
2,我们讨论下atoi() itoa()
此函数包含在<stdlib.h>库文件中
atoi()一般是将字符串转化为整形
itoa()则是将整形转化为字符串,而其中的第三个参数,为转化基数,例如这里为16,我们的待输入整形为100,则此函数将100转化为16进制形式,然后以字符串形式表示出来
另外,我们需要强调的是,itoa()此函数是windows独有,如果在linux想达到此效果,一般我们采用sprintf();
3.关于vc6.0 编译正确,链接出了错误,而错误的提示是关于begin_thread end_thread,一般要在工程中设置多线程
解决方法,工程-设置-c/c++-分类选项中,选择code Generation-在use run-time library中改成debug multithreaded就ok了
4.关于在linux中,定义ip地址的结构体
一般我们我们开发人员都是定义struct sockaddr_in *fromaddr;
但是在accept()函数里面一般都得强制(struct sockaddr*);
但是我们如果通过该结构体,将我们的ip地址赋给一个BYTE ip[6],其中BYTE为unsigned int类型
memcpy(ip,&(fromaddr->sinaddr.s_addr),IP_LENGTH);
sprintf(ip_addr,"%d.%d,%d.%d",ip[0],ip[1],ip[2],ip[3]);
一般我们定义个struct sockaddr_in *myaddr;
myaddr->sinaddr.s_addr=inet_addr("192.168.0.30");
5.关于linux中引入库的问题
其中,pow log都是math.h库文件里面的,我们在调用它们的时候,不仅要添加头文件,在用gcc编译的时候,一定要记得添加-lm表示链接数学库
6.关于在linux中编程,使用时间函数的相关问题
#include<time.h>
#include<sys/time.h>
gettimeofday(struct timeval *tv,struct timezone*tz);//获取当前时间保存在结构体tv中。
struct timeval {
time_t tv_sec;//second
time_t tv_usec;//usecond
}*tv
利用gettimeofday()获取当前时间后,tv->tv_sec保存的是个long 的秒
如果要通过这个秒转化为年,月,日,星期,我们不妨定义一个结构体:
typedef struct date_time{
int year;
int month;
int day;
int hour;
int minute;
int sec;
int wday;//星期中的第几天
}
单独强调:localtime();的作用,把从1970-1-1 0点 0分到当前时间系统所偏移的秒数时间转化为日历时间
定义一个函数,getDateFromSec(date_time *dt,unsigned long nowTime)
{
struct tm*start_time;
start_time=localtime((time_t*)(&nowTime));
dt->year=start_time->tm_year+1900;//区别1970的年,这里从1900算起
dt->month=start_time->tm_mon+1;//这里的月0代表为1月,因此要+1
dt->day=start_time->tm_mday;//表示月份中的第几天
dt->hour=start_time->tm_hour;
dt->minute=start_time->tm_min;
dt->sec=start_time->tm_sec;
dt->wday=start_time->tm_wday+1;//星期中的第几天,这里也是从0算起,因此我们仍需+1
}
7.关于闰年
BOOL is_leap_year(int year)
{
if(year%4==0&&year%100!=0||year %400==0)
return TRUE;
else return FALSE;
}