2013-02-27 19 views
6

%s kullanan bir scanf'e ascii altıgen karakterler vermenin bir yolu var mı? \x08\xDE\xAD gibi onaltılık karakterleri eklemeye çalışıyorum (örneğin arabellek taşması göstermek için).Taranacak ASCII olmayan karakterleri girme ("% s")

Girdi, komut satırı parametresine değil, program içindeki bir scanf'e.

+0

Programınızın standart girişine neden fprintf ("\ 0xDE") 'değil? –

+2

Klavyenizde bu karakterleri yazabilirseniz, bu çalışmalıdır. Aksi halde, bir yönlendirme, ./a.out

+0

İlk düzenlemem gerçekleşmedi. Komut satırı argümanıysa, söyledikleriniz işe yarayacaktır. Ancak bu bir komut satırı argümanı değildir. Ve yazdırmak istediğim karakterler Yazdırılabilir değil. – asudhak

cevap

1

'scanf()'a' derken, muhtemelen bunun sağlanabilmesi için başka veriler de vardır. Belki de bir Perl ya da Python betiği olan bir programa sahip olmak, veriyi oluşturmak ve ASCII olmayan karakterleri programınızın standart girdisine yazmak ister miydi? Bir terminal gibi görünmek için standart girişe ihtiyacınız varsa, bunu sizin için işleyen expect'u araştırmalısınız. Bu, problemle baş etmenin yaygın bir yoludur.

2

Stdin'de (scanf ile okunduğunuzdan) rasgele verileri beslemek istediğinizi farz ediyorum.

Verileri oluşturmak ve programınıza aktarmak için kabuğu kullanabilirsiniz. Bu sadece sürece (a %s formatı ile scanf beyaz boşluk durur çünkü) beslenecek hiçbir beyaz boşluk karakterleri olduğu gibi çalışacağını

printf '\x08\xDE\xAD' | yourprogram 

Not.

+0

Eğer Windows kullanıyorsanız ve 'printf' komutuna sahip değilseniz, bir dosya oluşturun ve 'stdin' dosyasına yönlendirin:' yourprogram anatolyg