问题描述
我想在指定的索引处从指针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");
}
当我尝试将 only 设置为指针[1]时, only 的值变为\ 376或其他数字。 怎么了?
编辑
因此,有没有一种方法可以从 char指针[i] 获取值('e'),而不要获取ascii或其他\ 376值?
解决方法
我不想成为“那个”人,但是此代码在我的机器上可以正常工作。您正在使用哪种编译器-以及哪些选项?我尝试同时使用GCC和Clang,并且都打印“确定”。
您可以尝试将printf("ok");
更改为printf("ok\n");
。可能是您的终端没有打印“确定”,因为没有换行符来“刷新缓冲区”。我认为这是Windows上的常见问题。
您显示的代码似乎不是整个程序-main()函数丢失了。如果您可以将程序的其余部分添加到您的帖子中,我们可能可以帮助您更轻松地发现问题。
编辑:尝试将malloc(3)更改为calloc(3,1)。这会将内存初始化为零,而不是无用值。如果'only'变为零,我们知道问题出在指针分配而不是内存分配。