打印一个值后 getchar() 停止
getchar() stopping after printing one value
代码的功能:我的代码的功能非常简单。它将带有数字的 phone 数字转换为 phone 数字。
#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()
取一个值并仅在我希望它改变整个事物时才更改 number/letter。
我做过的事情:我发现其他人的代码已经这样做了,复制它,稍微改变一下(删除 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 创立
代码的功能:我的代码的功能非常简单。它将带有数字的 phone 数字转换为 phone 数字。
#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()
取一个值并仅在我希望它改变整个事物时才更改 number/letter。
我做过的事情:我发现其他人的代码已经这样做了,复制它,稍微改变一下(删除 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 创立