所以我想知道如何将实际角色存储到数组中。
char arr[4] = "sup!";
char backwards[4];
backwards[0] = *(arr + 3);
我想我的第二个问题是,如果我这样做,如果我使用%c提示向后[0]的printf,是否会显示实际字符?
答案 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}}应该可以解决问题。