在指针字符的C字符中获取数字



我想从指定索引的指针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"变为零,我们知道问题出在指针分配上,而不是内存分配上。

最新更新