如何解决如何打印argv参数?
.global main
main:
ldr r0,=message_format
b printf
message_format:
.asciz "argv: %s\n"
如果执行它,我会得到:
# ./a.out 7
argv: ^?~^?~
如何才能“传递”到argv?
解决方法
argv
是指向长度为argc + 1
的参数字符串指针列表的指针,其中最后一个元素是NULL
指针。
ldr r1,[r1,#4]
将argv
(argv[1]
)的第二个元素加载到r1
中。这是指向程序名称后的第一个参数字符串的指针。 (通常)
您要将这个字符串指针作为整数传递给printf
,这是不正确的,并且会导致它打印似乎是任意值的
所有argv
元素都是字符串,因此不需要其他转换。您只需要将printf
更改为"%i"
,就可以告诉"%s"
期望使用字符串而不是整数。
请注意,这仅在您确定还有第二个元素时才有效。在访问argv[0]
之前,应始终检查NULL
是否非argc
或argv[1]
大于0。然后,在访问argv[1]
指向的字符串之前,还应该检查NULL
是否非argc
或argv[1]
大于1。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。