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

时间:2017-03-30 19:52:51

标签: c switch-statement getchar

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

#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

2 个答案:

答案 0 :(得分:0)

代码中的问题是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创建

答案 1 :(得分:-3)

#include <stdio.h>

void 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);
    }

  }

}