我正在学习 C 作为第一编程语言。我输入了以下源代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,s,d;
printf("type the number which you want to add.\n\n");
scanf("%d %d",&a,&s);
d=a+s;
printf("addition is %d\n\n\n",d);
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在 Windows 7 和 Ubuntu 中使用 Code::blocks 在 Code::blocks 中输入了相同的源代码,但在 Ubuntu 中,当我运行它时,最后它说
sh: 1: pause: not found
Run Code Online (Sandbox Code Playgroud)
system(...)C 中的函数将命令作为字符串(在 C 中是一个字符数组)并将其传递给操作系统的默认命令处理器/shell 以执行它。
在 Windows 上,这将由 完成cmd.exe,它有一个内部命令pause,可以打印诸如“按任意键继续...”之类的内容,并在退出之前等待键盘事件。
然而,Ubuntu 幸运的是没有cmd.exe,而是sh在这里使用它作为它的默认 shell(它是dash内部的),它没有pause命令。你可以使用这样的东西:
read -p 'Press Enter to continue...' var
Run Code Online (Sandbox Code Playgroud)
请参阅DOS 的暂停命令的 bash 等效项是什么?和DOS 暂停等价的 Linux 是什么?(堆栈溢出)了解更多信息,但请注意 Csh在这里调用而不是bash.
因此,在您的 C 代码中,该行可以替换为:
system("read -p 'Press Enter to continue...' var");
Run Code Online (Sandbox Code Playgroud)
这将使您的程序只能在具有sh兼容 shell 的Linux 系统上运行,但它不再以这种形式在 Windows 上运行。
但是,请注意,system("pause");出于系统(“暂停”)中解释清楚的原因,通常不鼓励使用或类似(甚至独立于平台)的替代方案;- 为什么错了?
| 归档时间: |
|
| 查看次数: |
35929 次 |
| 最近记录: |