gpt4 book ai didi

c - getchar() 在打印一个值后停止

转载 作者:行者123 更新时间:2023-11-30 21:13:19 25 4
gpt4 key购买 nike

代码的功能:我的代码的功能非常简单。它将带有数字的电话号码转换为电话号码。

#include <stdio.h>

main(){

char num;

printf("Please enter a phone number with letters to be converted into a phone number: \n");

while ((num = getchar()) != '\n') {
switch(num){
case 'A': case 'B': case 'C': printf("2"); break;
case 'D': case 'E': case 'F': printf("3"); break;
case 'G': case 'H': case 'I': printf("4"); break;
case 'J': case 'K': case 'L': printf("5"); break;
case 'M': case 'N': case 'O': printf("6"); break;
case 'P': case 'R': case 'S': printf("7"); break;
case 'T': case 'U': case 'V': printf("8"); break;
case 'W': case 'X': case 'Y': printf("9"); break;
default: putchar(num);
}

return 0;

}

}

问题是getchar()就是取一个值并仅当我希望它改变整个事情时才更改该数字/字母。

我做过的事情:我发现其他人的代码已经做到了这一点,复制它,稍微改变一下(删除toupper函数),堆叠cases并排,但由于某种原因不起作用。是因为 switch 语句的位置吗?但我不认为是因为这个,因为它在打印一个值后结束。

我想要它做什么:

Enter phone number: 1-800-COL-LECT
1-800-265-5328

它的作用:

Enter phone number: 1-800-COL-LECT
1
Enter phone number: 5-469-COL-LECT
5

最佳答案

代码中的问题是 return 0; 位于 while 循环内部。您需要做的是将 return 0; 移到循环之外,它将修复它。

#include <stdio.h>

main(){

char num;

printf("Please enter a phone number with letters to be converted into a phone number: \n");

while ((num = getchar()) != '\n') {
switch(num){
case 'A': case 'B': case 'C': printf("2"); break;
case 'D': case 'E': case 'F': printf("3"); break;
case 'G': case 'H': case 'I': printf("4"); break;
case 'J': case 'K': case 'L': printf("5"); break;
case 'M': case 'N': case 'O': printf("6"); break;
case 'P': case 'R': case 'S': printf("7"); break;
case 'T': case 'U': case 'V': printf("8"); break;
case 'W': case 'X': case 'Y': printf("9"); break;
default: putchar(num);
}
}
return 0;
}

最初由@kaylum创立

关于c - getchar() 在打印一个值后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43127156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com