【发布时间】:2019-10-26 15:10:58
【问题描述】:
我是 C 的新手,我试图将字母转换为键(就像在旧的移动键盘上一样),但开关盒总是以某种方式最终弄乱了数组。 当我尝试测试该值时,它返回的字符与数组中的字符完全不同。例如字符编号 32 而不是大写 V。
char *LetterToKey(char name[101])
{
char number[101];
bool unknwn = false;
for(int i = 0; i<101; i++)
{
if(unkwn) break;
switch (name[i])
{
case 'A':
case 'B':
case 'C':
case 'a':
case 'b':
case 'c': number[i] = '2'; break;
case 'D':
//...
default:
printf("%d\n", (int)name[i]);
unknwn = true;
break;
}
}
return number;
}
【问题讨论】:
-
请收下tour,学习How to Ask。已经注意了:您正在返回一个指向一个变量的指针,该变量 not 不再存在于函数之外。
-
当询问有关运行时问题的问题时,就像这个问题一样,请发布minimal reproducible example,以便我们可以复制问题并帮助您调试它
-
数组:
number[]是函数本地的,所以函数退出时会“消失”。试图返回数组只会返回一个地址,在堆栈上,数组:number[]所在的位置。在函数退出后尝试访问该数组会导致未定义的行为
标签: c arrays switch-statement