我希望调用strcmp函数返回0,这意味着
int strncmp(const char *s1, const char *s2, size_t n);
const char *s1
和 const char *s2
应该包含相同的字符串。如果s2
指向字符串 "hello",并且 n
是 4,我该如何传递一个十进制值给 s1
,以便它也对应于 hello
?
8049e87: c7 44 24 08 04 00 00 movl $0x4,0x8(%esp) // 4
8049e8e: 00
8049e8f: c7 44 24 04 80 bd 04 movl $0x804bd80,0x4(%esp) // the constant is "hello"
8049e96: 08
8049e97: 89 04 24 mov %eax,(%esp) // The contents of %eax are a decimal (%d)
8049e9a: e8 61 ec ff ff call 8048b00 <strncmp@plt>
8049e9f: 85 c0 test %eax,%eax // I want this to be 0!
我试着传递ASCII中"h"的十进制值,似乎是正确的方向,但不完全。
eax
需要包含一个字符串的地址,而不是一个“十进制”值。 - Paul R0x804bd80
放入eax中,然后s1和s2都应该指向同一个字符串。 - Paul R