-1

我需要一个返回 0 或 1 的函数,每个输入一个值。
输入应来自键盘,每行 1 个。
预期的输入是空格、1 和 0。
1 - 输入:应该产生 1
0 - 输入:应该产生 0
空格 - 输入:应该产生 0
输入:应该产生 0
制表符 - 输入:应该产生 0

除了单独输入之外,我现在所拥有的一切都可以正常工作,我正在使用 getchar() 和一堆 if 语句,但我似乎无法让它工作。
getchar() 似乎很难操纵只提供输入 - 或缺少输入 -
而不是换行符。

感谢您可能拥有的任何见解!

4

1 回答 1

2

请更具体。你可以这样做

#include <stdio.h>
// only if you dont want to wait for enter each get
#include <termios.h>
#include <unistd.h>

int main ()
{
   char c = 0;

   // only if you dont want to wait for enter each get
   struct termios newtty;
   tcgetattr (0, &newtty);
   newtty.c_lflag &= (~ICANON);
   tcsetattr (0, TCSANOW, &newtty);



   puts ("start\n");
   do {
      if(c == 0)
         c=getchar();
      switch(c)
      {
         case '1':
            c=getchar();
            if(c == '\n')
               putchar ('1');
            else
               continue;
            c = 0;
            break;
         case '0':
         case '\t':
            c=getchar();
            if(c == '\n')
               putchar ('0');
            else
               continue;
            c = 0;
            break;
         case '\n':
            putchar ('0');
            c = 0;
            break;
         default:
            c = 0;
            continue;
     }
  } while (1);
  return 0;
}
于 2012-12-03T20:59:40.763 回答