在C Char中从Pointer char获得Number

问题描述

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