. Advertisement .
..3..
. Advertisement .
..4..
For the problem “__isoc99_sscanf@plt”. I tried to fix it, but It doesn’t work and returns the result I want. Here is my program:
.code32
.file "mystery.c"
.text
.LCO:
.string "Incorrect number of command line arguments given"
.LC1:
.string "Input:%s"
.align 4
.LC2:
.string "Incorrect format for command line argument"
.LC3:
.string "Output: "%s"\n"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $32, %esp
cmpl $2, 8(%ebp)
je .L18
movl $.LC0, (%esp)
call puts
movl $1, %eax
jmp .L19
.L18:
movl 12(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, (%esp)
call strlen
movl %eax, %edx
movl %edx, %eax
sall $2, %eax
addl %edx, %eax
movl %eax, (%esp)
call malloc
movl %eax, 28(%esp)
movl $.LC1, %edx
movl 12(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl 28(%esp), %ecx
movl %ecx, 8(%esp)
movl %edx, 4(%esp)
movl %eax, (%esp)
call __isoc99_sscanf
cmpl $1, %eax
je .L20
movl $.LC2, (%esp)
call puts
movl $1, %eax
jmp .L19
.L20:
movl 28(%esp), %eax
movl %eax, (%esp)
call foo
movl $.LC3, %eax
movl 28(%esp), %edx
movl %edx, 4(%esp)
movl %eax, (%esp)
call printf
movl 28(%esp), %eax
movl %eax, (%esp)
call free
jmp .L17
.L19:
.L17:
leave
ret
.size main, .-main
.ident "GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-4)"
.section .note.GNU-stack,"",@progbits
and
call __isoc99_sscanf
has occurred. I’ve checked the entire command line but still can’t find the mistake.
This is what I believe helps:
In essence, it returns the total quantity of inputs that you have recently entered into the computer. It would set percent rax to 2 if you entered two digits in the field 1 4.
These routines give the number of input items back that were matched and assigned successully; this number may be less than what was anticipated or even 0 in the event that an early matching attempt failed.