现在的位置: 首页 > 综合 > 正文

12-1-9进步一小点(一)

2018年01月11日 ⁄ 综合 ⁄ 共 1905字 ⁄ 字号 评论关闭
1.在利用vc6.0编写c程序的过程中,main(int argc,char*argv[]) 其中argc代表的是我们输入的参数+1,其中argv[0]是默认的我们的文件名(绝对路径下的.exe文件名),这个文件名就是默认添加到了argc.

而我们在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;

}

抱歉!评论已关闭.