c - 代码错误,请问是怎么回事?

标签 c macos double scanf

我有一个问题。这段代码有什么错误?它将给出段错误:11

{
double os;
double windows = 2;

printf("Network info\n");

printf("Are you on Linux, OS X, or Windows? (1,2,3): ");
scanf("%s", os);
printf("checking..\n");
if (os == windows){
    printf("Getting informatin for windows..\n");
    system("ipconfig");
  }else{
    printf("Getting info for either osx or Linux..\n");
    system("ifconfig");
  }
}

最佳答案

在你的代码中,你应该改变

scanf("%s", os);

scanf("%lf", &os);

as, osdouble 类型。使用错误的格式说明符(或错误的参数类型)会调用 undefined behavior

阅读man page scanf() 的更多信息。

FWIW,对于整数值,最好使用 int 数据类型。

关于c - 代码错误,请问是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672311/

相关文章:

c - 使用给定的 url 在 Curl 中没有下载文件

c - 如何将数据写入 Mifare classic 标签

c++ - 格式化 float

python - 无法使用 pip 在 MacOS10.15 上安装 Kivy

Java:将(长)对象转换为 double 的多种方法

c - 无法使用 IPv6 进行多播

Mac OS 上的 Android Studio IDE :error=13, 权限被拒绝

macos - 为不支持的 GPU 为 Mac OS X 10.8 编译 Mesa

c# - 将 System.Double 转换为未缩放的值和比例

c# - 模棱两可的调用 Math.Round ( int64/int64, int)