c - 初始化后分配给数组中的特定索引

标签 c arrays initialization c-strings

分配第 26 个元素后,打印时,尽管我为第 26 个索引分配了一个字符,但仍然打印出“Computer”。我期待这样的事情:“计算机 K”

这是什么原因?

#include <stdio.h>
int main()
{
  char m1[40] = "Computer";
  printf("%s\n", m1);   /*prints out "Computer"*/
  m1[26] = 'K';
  printf("%s\n", m1);   /*prints out "Computer"*/
  printf("%c", m1[26]); /*prints "K"*/
}

最佳答案

在该字符串的 8th 索引处找到 \0 字符并且 %s 仅打印直到找到 \0 (字符串的结尾,由 \0 标记)- 在 26 处有字符 k 但不会打印因为在此之前找到了 \0

关于c - 初始化后分配给数组中的特定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52440004/

相关文章:

java - 为什么我的 javascript 数组从 java 对象获取未定义的值?

ios - 如何正确初始化类

c++ - 有没有办法在 C++ 中静态初始化动态分配的数组?

无法从 LPT1 获取端口句柄

c - 未知类型名称 'ssize_t'

c - 无法理解这个 C 程序

c++ - 与显式初始化相比,了解 C++ 中的复制初始化

C 将链表写入文件

java - Java NoSuchElementException

c - 打印字符数组时遇到问题?