Inputting Non ASCII characters to scanf(“%s”)

后端 未结 2 923
花落未央
花落未央 2021-01-12 14:59

Is there a way one can issue non ascii hex characters to a scanf that uses %s ? I\'m trying to insert hexadecimal chars like \\x08\\xDE\\xAD and so

相关标签:
2条回答
  • 2021-01-12 15:07

    When you say 'to a scanf()', presumably there is other data than just this to be supplied. Would it work to have a program, perhaps a Perl or Python script, generate the data and write the non-ASCII characters to the standard input of your program? If you need standard input to appear like a terminal, then you should investigate expect which handles that for you. This is a common way of dealing with the problem.

    0 讨论(0)
  • 2021-01-12 15:28

    I assume you want to feed arbitrary data on stdin (since you read with scanf).

    You can use the shell to create the data and pipe it into your program, e.g.

    printf '\x08\xDE\xAD' | yourprogram
    

    Note that this will only work as long as there are no white-space characters to be fed (because scanf with a %s format stops at white-space).

    0 讨论(0)
提交回复
热议问题