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

Chinaunix

標(biāo)題: 都清楚strncpy的語(yǔ)義嗎 [打印本頁(yè)]

作者: cjaizss    時(shí)間: 2015-09-17 12:48
標(biāo)題: 都清楚strncpy的語(yǔ)義嗎

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5.         char buf[4];
  6.         int i;
  7.         for(i=0;i<4;i++)
  8.                 buf[i] = '\x56';
  9.         strncpy(buf,"\x41\x42\x43",2);
  10.         for(i=0;i<4;i++)
  11.                 printf("%02hhx\n", buf[i]);
  12.         return 0;
  13. }
復(fù)制代碼
不編譯運(yùn)行可以猜對(duì)上述的結(jié)果嗎?
猜錯(cuò)的,反思一下以前有沒有使用錯(cuò)誤的情況。
今天看到一個(gè)錯(cuò)誤的代碼有感。
作者: hellioncu    時(shí)間: 2015-09-17 13:02
會(huì)把后面的置0
作者: nswcfd    時(shí)間: 2015-09-17 15:37
manpage里說明了src的前n個(gè)byte里沒有\(zhòng)0的行為。

只是不知道這是不是c標(biāo)準(zhǔn)里明確定義的(*),其它平臺(tái)是不是也都這么實(shí)現(xiàn)的。

* 根據(jù)http://en.cppreference.com/w/c/string/byte/strncpy,貌似是標(biāo)準(zhǔn)定義的行為。
作者: bruceteen    時(shí)間: 2015-09-17 15:46
#include <string.h>
char *strncat(char * restrict s1, const char * restrict s2, size_t n);

Thus, if there is no null character in the first n characters of the array pointed to by s2, the result will not be null-terminated.

抱歉,您的帖子小于 10 個(gè)字符的限制
3 秒后窗口關(guān)閉
               

作者: hellioncu    時(shí)間: 2015-09-17 16:01
樓上眼花了
作者: drangon    時(shí)間: 2015-09-17 22:45
寫成:

strncpy(buf,"\x41\x42",4);

才能看到你想要的效果吧

作者: cjaizss    時(shí)間: 2015-09-18 09:44
代碼會(huì)輸出
41
42
56
56
未必是個(gè)字符串哦,以前可能用錯(cuò)的反省去。
作者: zylthinking    時(shí)間: 2015-09-18 10:10
回復(fù) 7# cjaizss

直覺是這個(gè)結(jié)果, 結(jié)果被你嚇得以為有陷阱的要不要反?


   
作者: folklore    時(shí)間: 2015-09-18 10:51
回復(fù) 7# cjaizss


    沒用錯(cuò), 不過, 我一般不用這個(gè)函數(shù)。
作者: cjaizss    時(shí)間: 2015-09-18 11:50
zylthinking 發(fā)表于 2015-09-18 10:10
回復(fù) 7# cjaizss

直覺是這個(gè)結(jié)果, 結(jié)果被你嚇得以為有陷阱的要不要反?

一樣要反省
作者: sonicling    時(shí)間: 2015-09-18 23:27
不會(huì)加0的,加0就錯(cuò)了。要么少拷貝一個(gè)字節(jié),要么溢出




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