在C中,从指针Char获取数字
我想从指定索引处的指针char分配char,但malloc设置为pointer很多数字:在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 *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”)代码>用于查看。