我正在试图弄清楚如何使用scanf来获取用户输入.我知道要使用printf:我所要做的就是将我想要在屏幕上写入的数据推送到堆栈中,如下所示:
global _main
extern _printf
extern _scanf
section .data
msg db "Hi", 0
section .text
_main:
push ebp
mov ebp, esp
push msg
call _printf
mov esp, ebp
pop ebp
ret
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何使用scanf.有人可以给我一个最简单的源代码scanf吗?我真的只想把用户输入的内容放入其中.
我不习惯32位大会.我只使用16位,我知道在16位(DOS)你可以这样做:
mov ah, 3fh
mov dx, input
int 21h
input rb 100d
Run Code Online (Sandbox Code Playgroud)
无论你键入什么,都会放在"输入"的地址.
我正在尝试在ARM笔记本电脑上模拟x86 Debian机器。我在这里关注该教程:https : //wiki.debian.org/QEMU#Operation
问题是,当我运行此命令时:
$ qemu-system-i386 -hda debian.img -cdrom debian-testing-i386-businesscard.iso -boot d -m 256
Run Code Online (Sandbox Code Playgroud)
它抛出此错误:
/build/buildd/qemu-kvm-1.0+noroms/tcg/arm/tcg-target.c:859:tcg致命错误
中止(核心已弃用)
我还没有找到任何解决方案。
我正在编写一个应用程序,它会将一些预编译的软件包安装到ARM Chromebook上,而且每次添加新软件包时我都不想更新我的程序,因此我将其设置为只下载一个列表我拥有的所有软件包(我可以更新),然后检查它是否是我编译并上传到我的网站的软件包.
问题是,它似乎只是读取文件的最后一行.最让我困惑的是它只读取了这个特定文件的最后一行.大多数其他文件读取所有行都很好.
这是我的代码:
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include <cstdio>
using namespace std;
int main(int argc, char* args[]) {
if (argc < 2) {
cout << "Please specify an application name.\n";
return 0;
}
cout << "Fetching list...\n";
system("wget -N www.charmbrew.tk/files/list --quiet");
cout << "Reading application list...\n";
string line;
string package = args[1];
bool isInList = false;
ifstream list("list");
while (getline(list,line)) {
cout << line;
if (line == package) isInList = true;
}
list.close();
...
} …Run Code Online (Sandbox Code Playgroud) 如果我要运行"[6,3,8,7,5,2,1,9,4,0] .sort()"我得到"[0,1,2,3,4,5,6, 7,8,9]"作为你期望的输出.它将数字从最小到最大排序.但如果我要运行"[2,3,1,4e-20] .sort()",我会得到"[1,2,3,4e-20]"作为输出.为什么".sort()"函数将"4e-20"视为大于"3"?即使您运行"3> 4e-20",您也会得到"true"作为输出,表明JavaScript确实意识到"4e-20"是一个非常小的数字.但是sort函数将它视为一个非常大的数字.为什么是这样?是否有某些方法可以改变它,或者我只需要编写自己的函数?