【发布时间】:2017-08-01 00:49:53
【问题描述】:
我正在尝试基于单个 ASCII 代码创建一个字符数组。以下代码无法正确编译,即使 "num" 被强制转换为 char:
//Returns the ASCII counterpart of a number, such as 41 = A, 42 = B, 43 = C, etc.
char numToASCII(int num) {
char[] string = {(char)num, "\0"};
return string;
}
对于给我的任务,“字符串”是字符数组/字符串而不是单个字符非常重要。任何帮助将不胜感激。
【问题讨论】:
-
您所做的几乎实际上是有效的...您需要使用字符而不是字符串作为空终止符:我认为
char[] string = {(char)num, '\0'};将编译... -
但是不要返回那个,当你使用它时它会超出范围,要么malloc一些东西,要么传入内存
-
这三行代码有很多问题。无论如何,您不能从 C 中的函数返回数组。您可以将数组传递给函数以保存字符串;你真的需要一个功能吗?改用复合文字怎么样?
-
感谢您提供这些信息,@DavidBowling。我不知道 C 函数不能返回数组。考虑到这一点,我将不得不使用复合文字。
-
我不知道你想在这里做什么,但你也可以使用
snprintf()或printf()(如果你想将它打印到标准输出)。不过,您仍然需要为字符串提供空间。像char s[2]; snprintf(&s[0], sizeof(s), "%c", num);这样的东西。另外,请注意 41 不是“A”,0x41 是“A”。 :-)