如何将实际角色存储到数组中?

时间:2013-11-10 04:25:43

标签: c arrays

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

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

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

1 个答案:

答案 0 :(得分:2)

首先,让我们修复你的数组大小问题:

C中的字符数组是null-terminated:这意味着您需要为尾随\0添加空格以终止字符串。您可以在第一行使用char arr[5]。 (请注意,如果您绝对某些,您从不将使用此字符数组与任何C字符串处理函数, AND 您将你的角色个人分配为chars而不是字符串,这在技术上并不是必需的。但是节省一些调试时间并用掉额外的字节。)这可能是你“奇怪的错误”的根源。

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

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

C对于让你走出数组末尾并踩踏数据或读取错误值没有任何疑虑。这里是龙。小心。

现在,问你的实际问题:

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

2)是的,带printf的{​​{1}}应该可以解决问题。