scanf不适用于在线参赛者

时间:2017-05-29 10:45:28

标签: c

我昨天开始学习C语言并制作了一个简单的二元变换器。它在我的电脑上工作正常,但是,除了can9之外,它在大多数在线代码运行器(编译器)上都不起作用。看起来scanf函数通常与在线IDE不兼容?

这是代码。

#include <stdio.h>
#include <string.h>

int main(){

   int a;
   int b;
   int c[255];
   char opt[100];

   printf("10進数の値を入力してください > ");
   scanf("%d", &a);
   printf("計算式を表示しますか? y(yes) or n(no) > ");
   scanf("%s", opt);

   if(strcmp(opt, "y") == 0){
        printf("\n計算式: \n"); 
   }

   int i = 0;
   while(a > 0){
       b = a / 2;
       c[i] = a % 2;

       if(strcmp(opt, "y") == 0){
           printf("%d ÷ 2 = %d 余り %d\n", a, b, c[i]);
       }

       a = b; 
       i++;
   }

   printf("\n2進数: ");

   int j;
   for(j = i-1; j >= 0; j--){
      printf("%d", c[j]);
   }

   printf("\n");
   return 0;
}

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我的通灵能力告诉我你期待这些在线编译器提示你输入(比如在终端窗口中运行程序)。不幸的是,对于大多数在线编译器来说情况并非如此。相反,在某个地方有一个文本框,您可以在程序的标准输入中键入所需输入的 all

例如,参加这个小程序:

#include <stdio.h>

int main()
{
    char c;

    printf("Gimme a character! ");
    fflush(stdout);
    scanf(" %c", &c);

    printf("You typed in '%c'! Yay! :)\n", c);
}

在终端中编译并运行它可以在窗口中生成以下内容(输入为粗体):

  

给我一​​个角色!的˚F
  你键入'f'!好极了! :)

但是在不提示输入的在线编译器中运行它可能如下所示:

  

给我一​​个角色!你键入''!好极了! :)

通过在提供的文本框中输入输入(取决于在线编译器),您可以通过这种方式为程序提供输入。

STDIN:

  

˚F

输出:

  

给我一​​个角色!你键入'f'!好极了! :)