| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「C 端末に対する読み取りと書き込み」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==C 端末に対する読み取りと書き込み== [Programming C] *Comand prompt から programを起動すると、shell が入力 stream と出力 streamをprogra…」)
 
1行目: 1行目:
 
==C 端末に対する読み取りと書き込み==
 
==C 端末に対する読み取りと書き込み==
[Programming C]
+
[[Programming C]]
  
 
*Comand prompt から programを起動すると、shell が入力 stream と出力 streamをprogramに結びつける。
 
*Comand prompt から programを起動すると、shell が入力 stream と出力 streamをprogramに結びつける。
8行目: 8行目:
 
*canonical modeは標準modeともいわれ、userの入力を、1行単位で処理する。1行が確定するまでは、applicationから文字を読み取ることはできない。
 
*canonical modeは標準modeともいわれ、userの入力を、1行単位で処理する。1行が確定するまでは、applicationから文字を読み取ることはできない。
 
*non-canonical modeでは、入力された文字の処理をapplicationから制御することができる。
 
*non-canonical modeでは、入力された文字の処理をapplicationから制御することができる。
  #include <stdio.h>
+
  #include &lt;stdio.h&gt;
 
  int main()
 
  int main()
 
  {   
 
  {   
30行目: 30行目:
 
   do {
 
   do {
 
     selected = getchar();
 
     selected = getchar();
     for (i = 0; i<3; i++) {
+
     for (i = 0; i&lt;3; i++) {
 
       if (selected == menu[i][0]) {
 
       if (selected == menu[i][0]) {
 
         printf("Selected: %s\n", menu[i]);
 
         printf("Selected: %s\n", menu[i]);

2020年2月15日 (土) 08:01時点における版

C 端末に対する読み取りと書き込み

Programming C

  • Comand prompt から programを起動すると、shell が入力 stream と出力 streamをprogramに結びつける。
  • ということは、getcharとprintfを使って、これらのdefault streamに対する読み取り、書き込みを行えば、userとの対話も可能となるはず。

カノニカルモード(canonical mode)と非カノニカルモード(non-canonical mode)

  • canonical modeは標準modeともいわれ、userの入力を、1行単位で処理する。1行が確定するまでは、applicationから文字を読み取ることはできない。
  • non-canonical modeでは、入力された文字の処理をapplicationから制御することができる。
#include <stdio.h>
int main()
{  
  char *menu[] = {
    "a - add something",
    "r - remove something",
    "q - quit",
    NULL,  
  };
  int chosen = 0;
  int selected;
  char **option;
  option = menu;  
  printf("MENU\n");
  while(*option) {
    printf("\t%s\n", *option);
    option++;
  }
 
  int i;
  do {
    selected = getchar();
    for (i = 0; i<3; i++) {
      if (selected == menu[i][0]) {
        printf("Selected: %s\n", menu[i]);
        break;
      }
    }
    if (selected == 'q') {
      break;
    }
  }while(1);
}

この本からの覚書。