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

Chinaunix

標(biāo)題: strncpy strcpy in Linux [打印本頁]

作者: hongjiujing    時(shí)間: 2013-07-17 16:01
標(biāo)題: strncpy strcpy in Linux
本帖最后由 hongjiujing 于 2013-07-17 16:35 編輯

119 char *strncpy(char *dest, const char *src, size_t count)
120 {
121     char *tmp = dest;
122
123     while (count) {
124         if ((*tmp = *src) != 0)
125             src++;
126         tmp++;
127         count--;
128     }
129     return dest;
130 }
131 EXPORT_SYMBOL(strncpy);

94 char *strcpy(char *dest, const char *src)
95 {
96     char *tmp = dest;
97
98     while ((*dest++ = *src++) != '\0')
99         /* nothing */;
100     return tmp;
101 }
102 EXPORT_SYMBOL(strcpy);

為什么strcpy用0值來判斷?而不用'\0',NUL是ascii為0值的字符。
作者: hellioncu    時(shí)間: 2013-07-17 16:08
0就是 '\0'

這個(gè)strncpy實(shí)現(xiàn)不規(guī)范吧
作者: daniel_11    時(shí)間: 2013-07-17 16:09
本帖最后由 daniel_11 于 2013-07-17 16:14 編輯
hongjiujing 發(fā)表于 2013-07-17 16:01
char *strncpy(char *dest, const char *src, size_t count)
120 {
121     char *tmp = dest;

看錯(cuò),編輯掉。
作者: myworkstation    時(shí)間: 2013-07-17 16:15
回復(fù) 3# daniel_11


    (*tmp = *src) 的結(jié)果不是指針,所以這地方的0還是判斷字符NUL
作者: myworkstation    時(shí)間: 2013-07-17 16:19
本帖最后由 myworkstation 于 2013-07-18 17:19 編輯

回復(fù) 1# hongjiujing

使用0的方式判斷的適應(yīng)性更好,如果使用非ASCII的計(jì)算機(jī)將不能保證使用'\0'的方式具有可移植性了,雖然大多數(shù)編碼'\0' == 0。
   
之前寫反了,C和C++標(biāo)準(zhǔn)都確定規(guī)定null character必須為0

C99
A byte withall bits set to 0, called the null character

C++2003
A null-terminated byte string, or NTBS, is a character sequence whose highest-addressed element with defined content has the value zero (the terminating null character).
作者: hongjiujing    時(shí)間: 2013-07-17 16:32
回復(fù) 5# myworkstation


    嗯?梢浦残源_實(shí)是一個(gè)問題。
作者: hongjiujing    時(shí)間: 2013-07-17 16:35
回復(fù) 3# daniel_11


    ???
作者: pmerofc    時(shí)間: 2013-07-17 17:32
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: pmerofc    時(shí)間: 2013-07-17 17:35
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: myworkstation    時(shí)間: 2013-07-17 19:27
回復(fù) 8# pmerofc


    null character一定是0,但'\0'不一定總是0,取決于編碼
作者: pmerofc    時(shí)間: 2013-07-17 23:55
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: idi0t    時(shí)間: 2013-07-18 15:32
回復(fù) 10# myworkstation


    能舉出一個(gè)例子來嗎?
作者: myworkstation    時(shí)間: 2013-07-18 17:20
回復(fù) 8# pmerofc


    之前我寫反了。你提醒的很對(duì)
作者: myworkstation    時(shí)間: 2013-07-18 17:25
回復(fù) 12# idi0t


    只是理論上是這樣,我目前只知道ASCII和EBDIC兩種編碼的計(jì)算機(jī)('\0'都是0),大多數(shù)其它編碼(Unicode,UTF-*)兼容ASCII。處理特殊編碼的計(jì)算機(jī)所用的特殊編碼可能就是這樣了。如果你有所發(fā)現(xiàn)可以交流一下




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2