C行结束char

时间:2011-08-20 15:30:42

标签: c char newline

我遇到了这个问题。

char buffer[100];
buffer[0] = "\n";

出于某种原因,以下陈述是正确的

buffer[0] == 'T'

什么时候应该是“\ n”ascii。为什么呢?

3 个答案:

答案 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将只分配具有垃圾值的空间。