0

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

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

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

4

1 回答 1

2

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

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

似乎您知道,但要记住的另一件事是在 C 中,数组是从零开始的。这意味着当你声明和数组 like 时char arr[4],你真的得到了

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

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

现在,关于您的实际问题:

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

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

于 2013-11-10T05:08:31.773 回答