亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: yecheng_110
打印 上一主題 下一主題

多個strcmp比較的時候大家是怎么做的? [復制鏈接]

論壇徽章:
0
21 [報告]
發(fā)表于 2007-07-19 11:04 |只看該作者
表驅(qū)動.

論壇徽章:
0
22 [報告]
發(fā)表于 2007-07-19 11:13 |只看該作者
如果要頻繁比較,可以用trie。概念很簡單,自己實現(xiàn)也不難。

http://www.cs.bu.edu/teaching/c/tree/trie/
http://www.nist.gov/dads/HTML/trie.html

[ 本帖最后由 lgfang 于 2007-7-19 11:18 編輯 ]

論壇徽章:
0
23 [報告]
發(fā)表于 2007-07-19 11:18 |只看該作者
vafls_scott 說的我比較贊成。
幾乎可以肯定樓主需要的是可讀性和可維護性,而不是效率。

如果需要效率,可以分析一下運行需要多少時間,多少次,總和是多少,估計這個值會遠遠小于樓主所能接受值的%1

論壇徽章:
0
24 [報告]
發(fā)表于 2007-07-19 11:25 |只看該作者
寫了一個例子
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
        if (argc < 2)
                exit(1);
        int i = 0;
        while(i++ < 1000000)
        if (!strcmp(argv[1],"asdfasf"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asfawfe"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"ssafwfwfj"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfafwa "))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfwfewae"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asfawfe"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"ssafwfwfj"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfafwa "))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfwfewae"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asfawfe"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"ssafwfwfj"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfafwa "))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfwfewae"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asfawfe"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"ssafwfwfj"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfafwa "))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfwfewae"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asfawfe"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"ssafwfwfj"))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfafwa "))
                printf("line: %d\n",__LINE__);
        else if (!strcmp(argv[1],"asdfwfewae"))
                printf("line: %d\n",__LINE__);
}



在我的機器上跑了一下

cc  ifeles.c
./a.out nosuchstring

real    0m0.941s
user    0m0.896s
sys     0m0.000s

cc  ifeles.c -O3
time ./a.out nosuchstring

real    0m0.235s
user    0m0.202s
sys     0m0.001s

論壇徽章:
95
程序設計版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設計版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設計版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
25 [報告]
發(fā)表于 2007-07-19 11:44 |只看該作者
原帖由 chmxu 于 2007-7-19 11:25 發(fā)表
寫了一個例子
#include
#include
#include
int main(int argc,char *argv[])
{
        if (argc < 2)
                exit(1);
        int i = 0;
        while(i++ < 1000000)
        if (!strcmp(argv[1],"asdfasf"))
                printf("line ...

這種代碼我看著就頭疼。另外,實際中的代碼往往比這個復雜(雖然結(jié)構一樣),那就更令人頭大了。

論壇徽章:
0
26 [報告]
發(fā)表于 2007-07-19 11:59 |只看該作者
是的,可讀性不好,而且很難維護,最好是放到一個結(jié)構數(shù)組,然后遍歷

論壇徽章:
0
27 [報告]
發(fā)表于 2007-07-19 12:08 |只看該作者
Do you wants to parse the command line args?
man getopt
man getoptlong

論壇徽章:
1
雙子座
日期:2015-01-04 14:25:06
28 [報告]
發(fā)表于 2007-12-30 23:56 |只看該作者
原帖由 ivhb 于 2007-7-17 09:47 發(fā)表


一般來說,羅列(并且很多)這樣的結(jié)構都可以通過仔細設計,適應表驅(qū)動法。
比如你可以
struct  {
  const char *name;
  int (*action)(void);
};

通過這個配置就可以把特征碼和對應動作捆綁,如果 ...

以前那個程序做了就離職了
現(xiàn)在在做新的項目又遇到了這個問題
就是采用的這個辦法了
過了幾個月再來看以前的討論 感覺自己進步了

[ 本帖最后由 yecheng_110 于 2007-12-31 00:01 編輯 ]

論壇徽章:
0
29 [報告]
發(fā)表于 2008-01-08 00:14 |只看該作者
create index 吧

論壇徽章:
0
30 [報告]
發(fā)表于 2008-01-08 09:17 |只看該作者
通用的方法
(不一定是最好的)

int memcmp(const void *s1, const void *s2, size_t n);

DESCRIPTION
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The memcmp() function compares the first n bytes of the memory areas s1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and s2.  It returns an integer less than, equal  to,  or  greater  than
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zero  if  s1  is  found, respectively, to be less than, to match, or be
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;greater than s2.
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP