免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kinns
打印 上一主题 下一主题

[C] C语言中怎么样把时间转到20041225这样的? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
21 [报告]
发表于 2004-12-27 18:08 |只看该作者

C语言中怎么样把时间转到20041225这样的?

原帖由 "unicorns" 发表:
不敢苟同.
实际上应用界的发展趋势是将程序员的注意力从这些细节上移开
把更多精力集中到业务逻辑上去.

在学习中把这些搞清楚是好事情,并不表示在做事情的时候也要始终去关注你本来就明白的事情.

其实,浪费 CPU 的时间只是一方面。
另一方面,我觉得是浪费敲代码的时间。
当然了,如果你的编辑器可以自动生成 memset 的话,我倒是可以忍受。
否则,当我明知道我的字符串马上会在下面进行“写”操作,
却又要让我去一个字母一个字母敲 memset,一不留神还会因为敲错变量名称(注)而把别的变量给 set 了,那真是痛苦死了。

大家记住:
memset 只在第一个操作是读操作的时候才有用。
如果第一个操作就是写操作,那么根本就不需要用 memset,
用不分青红皂白一上来就去 memset  这种方式来换取心里的安慰我觉得纯粹是不自信的表现。

反正对于我来讲,我很容易就可以分清楚我的字符串需不需要 memset,
因此我也不会觉得我可能哪天会漏掉一个 memset,
再或者会因为考虑半天需不需要 memset  而分神。

注:当要输入两行类似的代码时,我经常会眼睛盯着上一行来敲键盘,从而一不留神就敲成和上面一样的内容了。再或者复制一段代码的时候也会有同样的问题。

论坛徽章:
0
22 [报告]
发表于 2004-12-27 18:21 |只看该作者

C语言中怎么样把时间转到20041225这样的?

void MA_GetStaticFileTime( char* plocaltime )
{
    time_t tt = time( NULL );  
    struct tm *curtime = localtime( &tt );  
    int year = 1900 + curtime->;tm_year;
    int month = curtime->;tm_mon + 1;
    int day = curtime->;tm_mday;
    int hour = curtime->;tm_hour;
    int min = curtime->;tm_min;  
    //int sec = curtime->;tm_sec;  
    sprintf( plocaltime, "%04d%02d%02d%02d%02d", year, month, day, hour, min );
    return;
}

论坛徽章:
0
23 [报告]
发表于 2004-12-28 10:10 |只看该作者

C语言中怎么样把时间转到20041225这样的?

其实我想说的是:不能片面地理解初始化,如果把初始化理解为“清零”那就太狭隘了。
客户是不关心细枝末节的东西,但是如果做产品也是这样一种态度就不对了,我们现在的很多应用工具效率低下、内存耗费过高、进而导致系统响应缓慢等现象,不能说和这种态度不无关系。
精益求精永远不会错!

论坛徽章:
0
24 [报告]
发表于 2004-12-28 10:23 |只看该作者

C语言中怎么样把时间转到20041225这样的?

原帖由 "flw" 发表:

其实,浪费 CPU 的时间只是一方面。
另一方面,我觉得是浪费敲代码的时间。
当然了,如果你的编辑器可以自动生成 memset 的话,我倒是可以忍受。
否则,当我明知道我的字符串马上会在下面进行“写”操作,
却又..........

要是别人修改你的程序的话,只要一犯晕,bug连绵不绝。

论坛徽章:
0
25 [报告]
发表于 2004-12-28 11:08 |只看该作者

C语言中怎么样把时间转到20041225这样的?

兄弟们说的都很好.
总结起来实际上就是看问题的角度不同.

aero说的没有错,如果在系统层做事情memset这东西当然是铺张浪费.
做嵌入式因为硬件限制也不允许这种铺张浪费.我前面所指只是就应用程序而言.

我觉得做程序要找到一个平衡点,不可否认太过频繁的使用了memset会使程序效率上受到影响,过多分配的内存会使程序占用的资源大大上升.但就象马克思他老人家说的,事物都是有两面性的,由此带来的好处就是程序的开发周期缩短,可维护性增强等等.片面的追求哪一方面都不能说是正确的,如果可以找到一个可以接受的中间点那何乐而不为呢.

现在的情况是硬件资源的价格要远远低于人力资源的价格,用机器的时间来换人的时间还是比较划算的一件事情.放在十年前那是另一种情况.

flw老大,今天我和你意见差别可大了点.
首先,如果这个程序是你一个人写,我个人相信你的能力可以写好没问题.但现在又有多少个工程是一个人干下来的.你不可能寄希望于开发团队里每个人都和你的水平一样,而且一直都保持一颗清醒的头脑,所以如果条件允许还是在出问题的源头把他堵住的好.
其次,不能简单的分读操作还是写操作而辨别是否用memset之类的初始化.有些变量定义了可能在很远以后才会使用.不会一次考虑那么远的.

我曾经碰到这样一个问题.前人写了这样一段代码

  1. char strbuf[1024] ;
  2. ........
  3. ........
  4. strcpy(strbuf, "initstr") ;
  5. ........
  6. ......
  7. strcat(strbuf, "str1") ;
  8. strcat(strbuf, "str2") ;
  9. .......
  10. .......
复制代码

后来有人处于某些情况又改了这个程序,把strcpy那段去掉了.
结果可想而知.

可能有人会说那就只能怪后面改的那人学艺不精.
但这根本就是可以用一个memset避免的.

论坛徽章:
0
26 [报告]
发表于 2004-12-28 11:19 |只看该作者

C语言中怎么样把时间转到20041225这样的?

原帖由 "flw" 发表:

大家记住:
memset 只在第一个操作是读操作的时候才有用。
如果第一个操作就是写操作,那么根本就不需要用 memset,
用不分青红皂白一上来就去 memset 这种方式来换取心里的安慰我觉得纯粹是不自信的表现。
却又..........

支持老大,不过……
一个被memset的地址读它干嘛??     

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
27 [报告]
发表于 2004-12-28 11:32 |只看该作者

C语言中怎么样把时间转到20041225这样的?

偶支持unicorns,不能以君子之心度小人之腹!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
28 [报告]
发表于 2004-12-28 11:39 |只看该作者

C语言中怎么样把时间转到20041225这样的?

还有这样的情况:
1、strcpy(buf, fuc());
但fuc() return NULL;

2、memcpy(buf, value1, len1);
     memcpy(buf+len1, value2, len2);
......
不用memset,就这样
len = 0;
memcpy(buf, value1, len1);
len += len1;
....
buf[len] = 0;

不爽

论坛徽章:
0
29 [报告]
发表于 2004-12-28 12:27 |只看该作者

C语言中怎么样把时间转到20041225这样的?

这贴方向已经彻底与楼主 byebye了,呵呵

flw         
发表于: 2004-12-27 15:00    发表主题:
功底差且不思进去的朋友们多用用无妨,
不过,有些要求比较高的好公司是不要这样的程序员的


斑竹过份了吧,程序的应用需要和个人风格都不该涉及到人品吧?
至于公司的要求也因业务差异而不同。



aero         
帖子总数发表于: 2004-12-27 16:40    发表主题:
1、C已经渐渐的离开了应用程序开发领域了。我们无可否认的是,java、C++等一些从语法上面向对象,致力与快速、高效、简洁开发的语言正不断取代C的位置。那些越来越简单的各种工具,让人们的注意力越来越集中于项目逻辑,而不是技术细节。而C也正不断专注与系统开发和嵌入式开发部分。对于应用软件来说,几个函数的调用无所谓。可是对于系统软件和嵌入式软件,有些时候,几个时钟周期都是很重要的。


c语言的特点并不限制其应用环境就一定要在系统开发,电信,金融等领域许多核心业务控制系统就是c实现的,这里对程序的稳定,健壮和维护性的要求显然更被看重。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
30 [报告]
发表于 2004-12-28 12:35 |只看该作者

C语言中怎么样把时间转到20041225这样的?

原帖由 "zuibird" 发表:


c语言的特点并不限制其应用环境就一定要在系统开发,电信,金融等领域许多核心业务控制系统就是c实现的,这里对程序的稳定,健壮和维护性的要求显然更被看重。


晕,我说的只是一个方面啊,我又没都一棒子打死。A和B是两个命题,!A成立的话,B不一定成立吧?

另外,过分的“蛇足”,不见得就对程序的健壮性和可维护性有帮助。过分冗长的代码,反而会给读代码的人带来麻烦。当然memset并不过分,只是一个仁者见仁的问题。

这是一个仁者见仁的问题,正如每个人的代码有每个人不同的风格一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP