c - 如何将实际字符存储到数组中?

标签 c arrays

所以我想知道如何将实际字符存储到数组中。

    char arr[4] = "sup!";
    char backwards[4];
    backwards[0] = *(arr + 3);

我想我的第二个问题是,如果我这样做,如果我使用 %c 提示 backward[0] 的 printf,实际字符会出现吗?

最佳答案

首先,让我们解决数组大小问题:

C 中的字符数组是 null-terminated:这意味着您需要为尾随的 \0 添加空格以终止您的字符串。您可以在第一行使用 char arr[5]。 (请注意,如果您绝对确定,那么您将永远将此字符数组与任何 C 字符串处理函数一起使用,并且您将您的字符单独分配为字符而不是字符串,这在技术上不是必需的。但可以节省一些调试时间并用完额外的字节。)这可能是您的“奇怪错误”的来源。

好像你知道,但要记住的另一件事是在 C 中,数组是 zero-based .这意味着当你像 char arr[4] 那样声明和排列时,你真的得到了

arr[0]
arr[1]
arr[2]
arr[3]

C 毫不犹豫地让您离开数组的末尾并踩踏数据或读入错误的值。这里是龙。小心。

现在,开始您的实际问题:

1) 您使用单引号分配实际字符 arr[2]='x'; 如果您使用双引号,您将分配一个 C 字符串,如前所述,该字符串以 null 结尾。

2) 是的,printf%c 应该可以解决问题。

关于c - 如何将实际字符存储到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19886264/

相关文章:

c++ - 对象内的字符串数组

javascript - "array is not a function"错误

javascript - 使用 javascript 和 d3js 将 __data__ 从父节点分配给子节点

c - write(socket, buff, length) 使崩溃

c - 文件C程序错误异常

c - 读入文本文件作为输入并生成输出文件的程序,其中所有原始行均按字母顺序排列

c++ - set sysroot 命令与 set solib-search-path 命令

php - 如何在 php 中将 Json 转换为 CSV

c - C 版和 Fortran90 : optimization for filling subarrays before MPI_Gather

android - 链接到 Android 平台中自定义位置的共享对象