QA@IT
«質問へ戻る

6
タイトル
fputsの入力待ちが飛ばされて今います
fputsの入力待ちが飛ばされてしまいます

fputsの入力待ちが飛ばされてしまいます

以下のプログラムでscanfで条件選択をした後のfputsが入力待ちをしないで処理してしまいます。
おそらくscanfでのenterキーが改行文字として入力されているんだと思います。どう解決したら良いのでしょうか?
使用言語:C 環境:Windows, GCC, コマンドプロンプト

#include <stdio.h>
#include <stdlib.h>
int main(){
  while(1){
    int i;
    puts("形式を選択してください");
    puts("1.文字列  2.数字  3.終了");
    scanf("%d",&i);

    if(i==1){
      char a;
      char wrds[256];
      puts("好きな文を入力してください");
      puts("<!> 文字数は最大255文字");

      fgets(wrds, sizeof(wrds), stdin);

      puts("入力された文章");
      printf(">%s\n",wrds);
      char *p_wrd = wrds;
      printf("入力されたデータのアドレス = %d\n",p_wrd);

    }else if(i==2){
      int fig;
      puts("自然数を入力してください");
      scanf("%d",&fig);
      int *p_fig = &fig;

      printf("入力された数字 = %d\n",fig);
      printf("入力されたデータのアドレス = %p\n",p_fig);
      printf("入力されたデータのエイリアス = %d\n",*p_fig);
    }else if(i==3){
      puts("終了します");
      break;
    }else{
      puts("1~3のいずれかを入力してください");
    }
  }

  return EXIT_SUCCESS;
}
以下のプログラムでscanfで条件選択をした後のfputsが入力待ちをしないで処理してしまいます。
おそらくscanfでのenterキーが改行文字として入力されているんだと思います。どう解決したら良いのでしょうか?
使用言語:C 環境:Windows, GCC, コマンドプロンプト

```C
#include <stdio.h>
#include <stdlib.h>
int main(){
  while(1){
    int i;
    puts("形式を選択してください");
    puts("1.文字列  2.数字  3.終了");
    scanf("%d",&i);

    if(i==1){
      char a;
      char wrds[256];
      puts("好きな文を入力してください");
      puts("<!> 文字数は最大255文字");

      fgets(wrds, sizeof(wrds), stdin);

      puts("入力された文章");
      printf(">%s\n",wrds);
      char *p_wrd = wrds;
      printf("入力されたデータのアドレス = %d\n",p_wrd);

    }else if(i==2){
      int fig;
      puts("自然数を入力してください");
      scanf("%d",&fig);
      int *p_fig = &fig;

      printf("入力された数字 = %d\n",fig);
      printf("入力されたデータのアドレス = %p\n",p_fig);
      printf("入力されたデータのエイリアス = %d\n",*p_fig);
    }else if(i==3){
      puts("終了します");
      break;
    }else{
      puts("1~3のいずれかを入力してください");
    }
  }

  return EXIT_SUCCESS;
}

6
本文
 おそらくscanfでのenterキーが改行文字として入力されているんだと思います。どう解決したら良いのでしょうか?
 使用言語:C 環境:Windows, GCC, コマンドプロンプト
 
+```C
 #include <stdio.h>
 #include <stdlib.h>
 int main(){

fputsの入力待ちが飛ばされて今います

以下のプログラムでscanfで条件選択をした後のfputsが入力待ちをしないで処理してしまいます。
おそらくscanfでのenterキーが改行文字として入力されているんだと思います。どう解決したら良いのでしょうか?
使用言語:C 環境:Windows, GCC, コマンドプロンプト

#include <stdio.h>
#include <stdlib.h>
int main(){
  while(1){
    int i;
    puts("形式を選択してください");
    puts("1.文字列  2.数字  3.終了");
    scanf("%d",&i);

    if(i==1){
      char a;
      char wrds[256];
      puts("好きな文を入力してください");
      puts("<!> 文字数は最大255文字");

      fgets(wrds, sizeof(wrds), stdin);

      puts("入力された文章");
      printf(">%s\n",wrds);
      char *p_wrd = wrds;
      printf("入力されたデータのアドレス = %d\n",p_wrd);

    }else if(i==2){
      int fig;
      puts("自然数を入力してください");
      scanf("%d",&fig);
      int *p_fig = &fig;

      printf("入力された数字 = %d\n",fig);
      printf("入力されたデータのアドレス = %p\n",p_fig);
      printf("入力されたデータのエイリアス = %d\n",*p_fig);
    }else if(i==3){
      puts("終了します");
      break;
    }else{
      puts("1~3のいずれかを入力してください");
    }
  }

  return EXIT_SUCCESS;
}
以下のプログラムでscanfで条件選択をした後のfputsが入力待ちをしないで処理してしまいます。
おそらくscanfでのenterキーが改行文字として入力されているんだと思います。どう解決したら良いのでしょうか?
使用言語:C 環境:Windows, GCC, コマンドプロンプト

```C
#include <stdio.h>
#include <stdlib.h>
int main(){
  while(1){
    int i;
    puts("形式を選択してください");
    puts("1.文字列  2.数字  3.終了");
    scanf("%d",&i);

    if(i==1){
      char a;
      char wrds[256];
      puts("好きな文を入力してください");
      puts("<!> 文字数は最大255文字");

      fgets(wrds, sizeof(wrds), stdin);

      puts("入力された文章");
      printf(">%s\n",wrds);
      char *p_wrd = wrds;
      printf("入力されたデータのアドレス = %d\n",p_wrd);

    }else if(i==2){
      int fig;
      puts("自然数を入力してください");
      scanf("%d",&fig);
      int *p_fig = &fig;

      printf("入力された数字 = %d\n",fig);
      printf("入力されたデータのアドレス = %p\n",p_fig);
      printf("入力されたデータのエイリアス = %d\n",*p_fig);
    }else if(i==3){
      puts("終了します");
      break;
    }else{
      puts("1~3のいずれかを入力してください");
    }
  }

  return EXIT_SUCCESS;
}

質問を投稿

fputsの入力待ちが飛ばされて今います

以下のプログラムでscanfで条件選択をした後のfputsが入力待ちをしないで処理してしまいます。
おそらくscanfでのenterキーが改行文字として入力されているんだと思います。どう解決したら良いのでしょうか?
使用言語:C 環境:Windows, GCC, コマンドプロンプト

#include
#include
int main(){
while(1){
int i;
puts("形式を選択してください");
puts("1.文字列 2.数字 3.終了");
scanf("%d",&i);

if(i==1){
  char a;
  char wrds[256];
  puts("好きな文を入力してください");
  puts("<!> 文字数は最大255文字");

  fgets(wrds, sizeof(wrds), stdin);

  puts("入力された文章");
  printf(">%s\n",wrds);
  char *p_wrd = wrds;
  printf("入力されたデータのアドレス = %d\n",p_wrd);

}else if(i==2){
  int fig;
  puts("自然数を入力してください");
  scanf("%d",&fig);
  int *p_fig = &fig;

  printf("入力された数字 = %d\n",fig);
  printf("入力されたデータのアドレス = %p\n",p_fig);
  printf("入力されたデータのエイリアス = %d\n",*p_fig);
}else if(i==3){
  puts("終了します");
  break;
}else{
  puts("1~3のいずれかを入力してください");
}

}

return EXIT_SUCCESS;
}

以下のプログラムでscanfで条件選択をした後のfputsが入力待ちをしないで処理してしまいます。
おそらくscanfでのenterキーが改行文字として入力されているんだと思います。どう解決したら良いのでしょうか?
使用言語:C 環境:Windows, GCC, コマンドプロンプト

#include <stdio.h>
#include <stdlib.h>
int main(){
  while(1){
    int i;
    puts("形式を選択してください");
    puts("1.文字列  2.数字  3.終了");
    scanf("%d",&i);

    if(i==1){
      char a;
      char wrds[256];
      puts("好きな文を入力してください");
      puts("<!> 文字数は最大255文字");

      fgets(wrds, sizeof(wrds), stdin);

      puts("入力された文章");
      printf(">%s\n",wrds);
      char *p_wrd = wrds;
      printf("入力されたデータのアドレス = %d\n",p_wrd);

    }else if(i==2){
      int fig;
      puts("自然数を入力してください");
      scanf("%d",&fig);
      int *p_fig = &fig;

      printf("入力された数字 = %d\n",fig);
      printf("入力されたデータのアドレス = %p\n",p_fig);
      printf("入力されたデータのエイリアス = %d\n",*p_fig);
    }else if(i==3){
      puts("終了します");
      break;
    }else{
      puts("1~3のいずれかを入力してください");
    }
  }

  return EXIT_SUCCESS;
}