ASCII值显示为0
这是一个程序,用于打印连续输入的字符的ascii值,直到按下enter键,但该值显示为0。它如何修复它ASCII值显示为0,c,C,这是一个程序,用于打印连续输入的字符的ascii值,直到按下enter键,但该值显示为0。它如何修复它 void main(){ int i,d; char c; for(;;){ //for infinite loop printf("Character: "); getche(c); if(c==13){ printf("You pressed enter exiting program"); break; } pri
void main(){
int i,d;
char c;
for(;;){ //for infinite loop
printf("Character: ");
getche(c);
if(c==13){
printf("You pressed enter exiting program");
break;
}
printf("\tASCII value %d \n",c);
}
}
您没有正确使用
getche()
函数
void main(){
int i,d;
字符c;
对于(;){//对于无限循环
printf(“字符:”);
c=getche();
如果(c==13){
printf(“您按下了进入退出程序”);
打破
}
printf(“\tASCII值%d\n”,c);
}
}
getche()。您需要返回并了解C函数返回值是什么。请参阅…并且“someFunc(someType wotsit)”不能更改/加载/变异参数“wotsit”。许多初学者的帖子,尤其是链表和scanf的帖子,根本就没有意识到这一基本事实:(@MartinJames反例:typedefint-someType[42];void-sometfunc(someType-wotsit){wotsit[2]=7;}include-int-main(){someType-wotsit={1,2,3};printf(%d\n),wotsit[2]);sometfunc(wotsit);printf(“%d\n”,wotsit[2]);}
。很容易忘记,作为对函数的扩充的数组会转换为允许修改数组的第一个元素的指针。@chux,嗯,有点..指针没有被修改,数组本身没有按值传递,但我接受你的评论..这是真的,祝你好运,顺风顺水,祝你好运我方:)getche()
返回int
,而不是char
。您在这里不会有问题,因为您没有针对EOF
进行测试,但是如果您将返回值填充到char
而不是int
,那么与EOF
的比较可能是不正确的。感谢您指出@AndrewHenle。我只是证明了我认为问题范围的解决方案是错的。即使在问题范围内,如果用户输入了代码为-1的字符(或任何等于EOF值的值),那么即使没有按enter键,也不会工作并提前退出