我想从指定索引的指针char中分配char,但malloc设置为指针很多数字:
char *pointer = (char*)malloc(3);
char *chars = "hello";
pointer[1]= chars[1];
char only = pointer[1];
if(only=='e')//here return false, why??
{
printf("ok");
}
当我尝试将仅设置为指针[1]时,只有的值变为\376或其他数字。怎么了?
编辑
那么,有没有一种方法可以从char pointer[i]中获取值('e'(,而不获取ascii或其他类似\376的数字?
我讨厌成为那个人,但这段代码在我的机器上运行良好。您使用的编译器是什么?有哪些选项?我尝试使用GCC和Clang,它们都打印了";好";。
您可以尝试将printf("ok");
更改为printf("okn");
。可能是您的终端没有打印";ok";因为没有换行符来"刷新缓冲区"。我认为这是Windows上常见的问题。
您显示的代码似乎不是整个程序——main((函数丢失了。如果你能把程序的其余部分添加到你的帖子中,我们可能会帮助你更容易地找到问题。
编辑:尝试将malloc(3(更改为calloc(3,1(。这将把内存初始化为零,而不是垃圾值。如果"only"变为零,我们知道问题出在指针分配上,而不是内存分配上。