| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1163 人关注过本帖
标题:关于Util的问题
取消只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:20 回复次数:16 
关于Util的问题
RT
在一个程序代码中看到Util.h  但不知道他是什么意思。
他里面的内容是两个函数声明:char  GetCharInput( void );    //  获取一个字符
                             char  CharToLower( char ch );  // 若参数中的字符为大写字母则返回其小写
代码中还有个FileUtil.h注释说是:与文件相关的方法及数据类型的定义。
貌似Util应该有个相关的意思,就像File一样,但查了下词霸,解释为:跑龙套。这个意思和头文件的命名有什么关联吗?这里的Util.h头文件(比如像FileUtil.h)应该怎么通过其字面含义理解他的作用?
搜索更多相关主题的帖子: void 函数 
2012-02-09 17:23
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-2-9 18:02:29的发言:

你查的什麼字典呀?util是“有用的”,utility的簡寫。這是這個程序員自己寫的一些小工具模塊。
哈哈,金山词霸。也不知是简写哪
老大,还有个问题.
下面是Util.c的代码:
程序代码:
#include  "Util.h"
#include  <stdio.h>

char  CharToLower( char ch )
{
    return ( ( ch >= 'A' ) && ( ch <= 'Z' )
             ? ch + 32 : ch );               // 原来的代码是ch - 32 我改成+应该没错吧,返回是小写啊。
}

char  GetCharInput( void )
{
    char re;

    //    获取一个输入,并确定它不是回车符
    while ( ( re = getchar() ) == 10 );

    //  清空缓存区
    while ( getchar() != 10 );

    //  统一返回小写
    return CharToLower( re );
}
我想梳理下GetCharInput()函数的流程,你看下我的理解有么问题;
输入字符a 回车 --> while ( ( re = getchar() ) == 10 );获取a,不是回车结束循环 ,回车留在缓冲区 -->
while ( getchar() != 10 ); 获取回车,条件为假结束循环 --> return CharToLower( re ); 返回小写。
如果真是这样,那么我感觉这个函数设计的太好了,都只用空语句就达到目的了。





梅尚程荀
马谭杨奚







                                                       
2012-02-09 18:38
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 3楼 fenghelong
嗯,我就是想知道他的意思,程序代码的变量和函数命名都是匈牙利法,可以望文知义。

梅尚程荀
马谭杨奚







                                                       
2012-02-09 18:39
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-2-9 18:58:02的发言:

那只是跳過不需要的字符,是常用手法。另外,10是換行符,不是回車符。再說一遍:這種硬編碼編程風格(包括轉換大小寫那種方式),需要警惕!
什么是硬编码编程?
网上有这样解释的:比如说,一个服务期端的程序,在执行时需要创建服务器进行侦听,你可以简单的将它需要侦听的端口号放在代码里面,也可以通过程序参数传入,也可以通过配置文件放置。
 
我理解不了他这个解释

还有匈牙利命名法,我看到好多代码都这样用。但是又有人强烈建议不要使用匈牙利命名法。说这坏的命名规范,特别对于C/C++. 我们该怎么取舍?

梅尚程荀
马谭杨奚







                                                       
2012-02-09 20:40
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
另外,10是換行符,不是回車符。

那么我们键入Enter 是传送了个\n 还是 \r ?

梅尚程荀
马谭杨奚







                                                       
2012-02-09 20:46
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 9楼 TonyDeng
1. 按你的讲解,那么那个32应该最好定义为一个可以临时变换的端口号/参数/文件配置?
   网上还有这个解释:
    一个很基本的概念
   比如
  #define PI 3.14
  PI就是硬编码的,因为编译后不能再修改了

 最后一句的理解应该是相对于PI  3.14是个硬性数,应该做灵活处理,而不是处理PI这个字符吧?

2. 匈牙利命名法是過時了,如果有C++的類作為前綴以及強類型檢查編譯器,無需再靠命名字符來識別變量的數據類型。
  那么现在的最佳方案是什么?

3. wchar_t能处理汉字吧.比如这么定义  wchar_t  hanzi[] = "李连杰";   hanzi[0] = '李'?  c语言中能使用wchar_t吗?


[ 本帖最后由 有容就大 于 2012-2-9 21:33 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-02-09 21:29
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
去网上看了下 还有个骆驼命名法比较流行。现在知道怎么处理汉字数组啦。总之谢谢老大的讲解。

梅尚程荀
马谭杨奚







                                                       
2012-02-09 21:45
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 14楼 TonyDeng
嗯,还有个问题。
代码:
程序代码:
#include <stdio.h>
#include <locale.h>

int  main( void )
{
    wchar_t p[2] = L"你好";
  
    setlocale(LC_ALL, "");
    wprintf(L"%c\n", p[0]);
    wprintf(L"%c\n", p[1]);

    return  0;
}
结果正确-->
图片附件: 游客没有浏览图片的权限,请 登录注册

但是有个警告:warning C4045: '`O}Y' : array bounds overflow。为什么?
有么有不使用setlocale(LC_ALL, "");的方法?

梅尚程荀
马谭杨奚







                                                       
2012-02-09 22:04
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-2-9 22:08:10的发言:

這應是3個元素的數組,wchar_t p[3];
別忘了結束符。

不用那個設定也可以了,默認使用執行機器的Windows配置。
這應是3個元素的數組,wchar_t p[3];
別忘了結束符。
改了 ,警告也没了。

不用那個設定也可以了,默認使用執行機器的Windows配置。
怎么设置啊, 是不是头文件也要变?

梅尚程荀
马谭杨奚







                                                       
2012-02-09 22:10
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 18楼 TonyDeng
程序代码:
#include <stdio.h>
#include <windows.h>

int  main( void )
{
    wchar_t p[3] = L"你好";

 
    wprintf(L"%c\n", p[0]);
    wprintf(L"%c\n", p[1]);

    return  0;
}
这样运行结果只有个 press any key to continue.....

梅尚程荀
马谭杨奚







                                                       
2012-02-09 22:17
快速回复:关于Util的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044864 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved