Advertisement
Guest User

Untitled

a guest
Jul 1st, 2020
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.96 KB | None | 0 0
  1. #pragma warning(disable: 4996)
  2. #include <string>
  3. #include <Windows.h>
  4.  
  5.  
  6. char String[256];
  7. int InputHandle;
  8. int InputHandleA;
  9. int modoru = 0;
  10. int mozicount = 0;
  11. int gimonnlock = 0;
  12. int gimon = 0;
  13.  
  14. int my_str2(const char* s1, const char* s2)//ここで入力した文字列と用意された文字列を引数として扱う。
  15.  
  16. {
  17.     //s1, s2を比較する関数を使うためだけにs2の文字列のサイズが必要なので、変数aに用意した文字列の情報s2を文字列の長さを測るための関数strlenに引数として渡す。
  18.     const size_t a = strlen(s2);
  19.     //無限ループする。
  20.     for (;;) {
  21.         //関数memcmpの返り値が0の時は一致した時なので、==0とする。
  22.         if (memcmp(s1, s2, a) == 0)
  23.  
  24.             return 1;//入力した文字列にい指定された文字列が入っていた場合は1を返すように設定した。
  25. //入力した文字列が最後の文字まで到達した場合は一致する文字列がないということなので0を返すようにした。
  26.         else if (*s1 == '\0')
  27.  
  28.             return 0;//入っていなかった
  29. //文字列が一致した場合でも一致する文字列がない場合でも入力した文字列の一文字分の文字コードのバイト数?が繰り上がるようにした。
  30.         else
  31.  
  32.             ++s1;
  33.  
  34.     }
  35.  
  36. }
  37.  
  38. int memory = 0;
  39. char buffer[256];//★InputHandleに入ったのは文字のデータなので、文字のデータが受け取れる変数の型にする。
  40. char buffer2[256];
  41. char* p;
  42. FILE* outputfile;         // 出力ストリーム
  43. int inputmozi = 0;
  44. int hyouzi = 0;
  45. unsigned char uchr;
  46. int main(void)
  47. {
  48.     printf("memoyの値:%d", memory);
  49.     printf("bufferの値:%s", buffer);
  50.     printf("bufferの値:%s", buffer2);
  51.  
  52.     //新しい言葉の処理
  53.  
  54.  
  55.         //  キーボード入力待ち
  56.         inputmozi = getchar();
  57.         sprintf(buffer, "%d", inputmozi);
  58.         if (my_str2(buffer, "覚えて")) {
  59.             printf("何を覚えますか?");
  60.            ++mozicount;
  61.             memory = 1;
  62.             gimon = 0;
  63.         }
  64.         //覚えてという言葉以外の場合はメモを読み込む込んでループに入るようにした。
  65.         else if (memory == 0) {
  66.             outputfile = fopen("da.txt", "r");  // ファイルを読み込み用にオープン(開く)
  67.             if (outputfile == NULL) {          // オープンに失敗した場合
  68.                 printf("cannot open\n");         // エラーメッセージを出して
  69.                 exit(1);                         // 異常終了
  70.             }
  71.             //fgetsがNULLになるまで繰り返す
  72.      //fgets(str,256,lf)!=NULL
  73.      //と同じです。このように短縮することも可能
  74.             //★bufferには文字入力の文字列を入れたので、ここにはメモからの文字列は入れられない。なので新しくbuffer2を作る。
  75.             while ((fgets(buffer2, 256, outputfile)) != NULL)//メモに書いた文字列をbuffer2の中に入れる。
  76.             {
  77.                 if (my_str2(buffer, "映画") && my_str2(buffer, "好き") && my_str2(buffer, "どんな") && my_str2(buffer, "?") ||
  78.                     my_str2(buffer, "映画") && my_str2(buffer, "好き") && my_str2(buffer, "?")) {
  79.                     ++mozicount;
  80.                     gimonnlock = 1;
  81.                     if (my_str2(buffer2, "映画") && my_str2(buffer, "どんな")) {
  82.                         hyouzi = 1;
  83.                         break;
  84.                     }
  85.                 }
  86.                // 文字の入力の入るバッファと、メモからの文字が入るバッファ2とで一致する文字が出てきた場合
  87.                 //注意:自作関数my_str2は成功の時に1としたので==1とする。
  88.                 if (my_str2(buffer, buffer2) == 1) {
  89.                     hyouzi = 1;
  90.                 }
  91.                 // 文字の入力の入るバッファと、メモからの文字が入るバッファ2とで一致しない文字が出てきた場合
  92.                 if (hyouzi == 0) {
  93.                     if (my_str2(buffer, buffer2) != NULL) {
  94.                         gimon = 1;
  95.                     }
  96.                 }
  97.             }
  98.  
  99.             fclose(outputfile);          // ファイルをクローズ(閉じる)
  100.  
  101.         }
  102.         if (memory == 1 && my_str2(buffer, "とは") or memory == 1 && my_str2(buffer, "は") or memory == 1 && my_str2(buffer, "が")) {
  103.             ++mozicount;
  104.             memory = 2;
  105.         }
  106.     //エンターキーが押されていないときでの処理
  107.     if (memory == 2) {  
  108.         //例えば、intとして49はそのままの値だが、charとしては49は文字コードで言う1を表す。//このような変換をしたようなもの。
  109.         outputfile = fopen("da.txt", "a+");  // ファイルを書き込み用にオープン(開く)
  110.         if (outputfile == NULL) {          // オープンに失敗した場合
  111.             printf("cannot open\n");         // エラーメッセージを出して
  112.             exit(1);                         // 異常終了
  113.         }
  114.         fprintf(outputfile, "%s\n", buffer); // ファイルに書く
  115.         fclose(outputfile);          // ファイルをクローズ(閉じる)
  116.         //fclose(fp);//ファイルに書き込んだときにウィンドウが消えるようになっているので、memoryが1になった瞬間に書き込んでいるうんぬん以前に
  117.         //ファイルが閉じるのでウィンドウが消えてしまう。
  118.         memory = 0;
  119.         // return 0;//ここで0になると終了してしまうので書き込んだ後も言葉が打ち込めるようにここを消す。
  120.  
  121.     }
  122.  
  123.     if ( hyouzi == 1) {
  124.         printf("取得した文字:%s", buffer2);
  125.  
  126.     }
  127.     if (hyouzi == 0 && gimon == 1) {
  128.         printf("%sとは何ですか?", buffer);
  129.     }
  130.  
  131.     // 終了
  132.     return 0;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement