我遇到了这个问题。
char buffer[100];
buffer[0] = "\n";
出于某种原因,以下陈述是正确的
buffer[0] == 'T'
什么时候应该是“\ n”ascii。为什么呢?
答案 0 :(得分:7)
"\n"
是一个C字符串,它是一个char *
,指向空终止的char
元素系列。您的程序获取该字符串的地址,并将最低的8位存储到buffer[0]
中。在您的情况下,它们恰好是T
的ASCII代码。
尝试以下方法:
char buffer[100];
buffer[0] = '\n';
'\n'
是一个char
字面值,因此会按预期运行。
答案 1 :(得分:1)
编辑:我弄错了。您的代码应该重写为以下代码:
char buffer[100]={0};
buffer[0]= '\n';
答案 2 :(得分:0)
试试*buffer[0] = '\n'
。我认为这会给你想要的结果,因为char
你指的不是string
。对于string
,请使用双引号和char
单引号。
正如评论buffer[0]
中正确指出的那样是char指针,所以首先需要分配内存。 calloc
在这里是更好的选择,因为它将分配默认的0值,而malloc
将只分配具有垃圾值的空间。