SCANF 不适用于在线运行器



我昨天开始学习C语言,并做了一个简单的二进制覆盖器。它在我的 PC 上运行良好,但是,除了 canuld9 之外,它不适用于大多数在线代码运行器(编译器)。看起来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 余り %dn", 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;
}

任何建议将不胜感激。

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

例如,以这个小程序为例:

#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"!耶!:)

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

给我一个角色!您输入了"!耶!:)

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

标准丁:

f

输出:

给我一个角色!你输入了"f"!耶!:)

最新更新