Char*返回malloc之后的垃圾值?

Char*返回malloc之后的垃圾值?,c,char,malloc,C,Char,Malloc,理想情况下,此函数接受一个字符串,并基于整数返回超过第一个单词(或“command”)的字母。即: input: "write 1234" //valLen = 4 and inputStr = "write 1234" output: "1234" “提取器功能”: 为什么会这样?非常感谢您的解释,谢谢 你已经回答了你自己的问题malloc只分配内存,不需要清除以前的内存。您可以使用calloc获取已清零的内存块,或者修改循环以在字符串末尾添加空字符 /*s

理想情况下,此函数接受一个字符串,并基于整数返回超过第一个单词(或“command”)的字母。即:

input: "write 1234"      //valLen = 4  and  inputStr = "write 1234"
output: "1234"          
“提取器功能”:


为什么会这样?非常感谢您的解释,谢谢

你已经回答了你自己的问题
malloc
只分配内存,不需要清除以前的内存。您可以使用
calloc
获取已清零的内存块,或者修改循环以在字符串末尾添加空字符

/*sets final string to value entered*/
for (i = 0; i < strlen(inputStr); i++)
{
    if (strlen(inputStr) - i <= *valLen)
    {
        outStr[count] = inputStr[i];
        count++;
    }
}

/* null terminate the string */
outStr[count++] = "\0";
/*将最终字符串设置为输入的值*/
对于(i=0;i如果(strlen(inputStr)-i,您的主要问题可能是您没有空终止输出,但仅供参考,
strlen(inputStr)-(strlen(inputStr)-*valLen)+1
简化为
*valLen+1
-这就是你的意思吗?
malloc
不初始化内存,它只是分配内存。指针处的值可以是任何值。使用
calloc
清除内存。不要强制转换
malloc
的返回值,不需要使用C,这样做可以屏蔽更多序列s的问题。我认为
count
应该已经增加了。请改用
outtr[count]=“\0”
。@nalyd88我只是再次增加它,以防他们想在此之后添加更多代码。这样,count将始终指向字符串中的下一个字符位置(我猜它已经被终止了,所以没有什么帮助。明白了。但是,考虑到OP不知道
malloc
是如何工作的,你可能想解释一下后增量法…哈哈
calloc
是我要找的!我在别处找不到这个有点傻…A买了一本关于C的书,但还没有到。)我在一定程度上只是从这个论坛上学习:p
input: "write 1234"
output: "1234══²²²²¼"
/*sets final string to value entered*/
for (i = 0; i < strlen(inputStr); i++)
{
    if (strlen(inputStr) - i <= *valLen)
    {
        outStr[count] = inputStr[i];
        count++;
    }
}

/* null terminate the string */
outStr[count++] = "\0";