关于c中的memset()函数?

时间:2014-11-03 10:30:59

标签: c memset

对于这个程序,我得到一些奇怪的输出?

    char str[]= "almost every programmer should know memset!";
    memset(str,'*',5);
    puts(str);

期望的输出:    *****几乎每个程序员都应该知道memset! 我观察到的:    *****每个程序员都应该知道memset!

对于6的倍数,只显示正确的输出。

2 个答案:

答案 0 :(得分:6)

您看到的输出是正确的:

memset()会为数组'*'的前5个字节设置str。字符串的其余部分保持不变。

答案 1 :(得分:4)

在大多数情况下,数组名称会衰减为指向第一个元素的指针,这意味着memset()调用会将{5}个字节设置为'*',从str的第一个元素开始。换句话说,它将用'*'覆盖前5个字母,输出将为:

*****t every programmer should know memset!