在C中,从指针Char获取数字

在C中,从指针Char获取数字,c,pointers,char,malloc,C,Pointers,Char,Malloc,我想从指定索引处的指针char分配char,但malloc设置为pointer很多数字: 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"); } 当我尝试将only设置为指针[1]时,

我想从指定索引处的指针char分配char,但malloc设置为pointer很多数字:

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");
}
当我尝试将only设置为指针[1]时,only值变为\376或其他数字。 怎么了

编辑


那么,有没有一种方法可以从char指针[i]中获取值('e'),而不获取ascii或其他类似\376的数字?

我不想成为“那个”人,但这段代码在我的机器上运行良好。您使用的是什么编译器,以及使用哪些选项?我尝试使用GCC和Clang,它们都打印了“ok”

您可以尝试更改
printf(“确定”)
printf(“确定\n”)。可能是因为没有换行符“刷新缓冲区”,所以您的终端没有打印“ok”。我认为这是Windows上的一个常见问题

显示的代码似乎不是整个程序-缺少main()函数。如果您可以将程序的其余部分添加到您的帖子中,我们可能会帮助您更轻松地找到问题


编辑:尝试将malloc(3)更改为calloc(3,1)。这会将内存初始化为零,而不是垃圾值。如果“only”变为零,我们知道问题出在指针分配上,而不是内存分配。

尝试向
printf
添加一个换行符以刷新输出:
printf(“ok\n”)
\include
并取消对
malloc()返回值的强制转换
\376
(八进制表示
254
)?字符指针的完整值为:0xdf4cb0“\360\027\337\253\253\253\253\253\253\253\253\253\253\253\376\376\376”,@VLN
指针
已优化,调试器显示垃圾。将
if(only='e'){printf(“ok”);}
更改为
printf(“%d%d\n”,only,only='e”)用于查看。