Bir dize scanf ile okuma
Biraz bir konuda kafam karıştı. Scanf ile C bir dize okuma doğru yol olduğunu sanıyordum() çizgisinde gitti
(hiç olası arabellek taşması, sadece basit bir örnekti)
char string[256];
scanf( "%s" , string );
Ancak, aşağıdaki çok iş gibi görünüyor
scanf( "%s" , &string );
Bu sadece benim derleyici (gcc), saf şans, yoksa başka bir şey mi?
Şimdiden teşekkürler
CEVAP
Bir dizi "çürük scanf("%s", string)
scanf("%s", &string[0])
eşdeğerdir yani" ilk öğe için bir işaretçi içine. Diğer taraftan, scanf("%s", &string)
geçer ama aynı yeri işaret ediyor--char[256]
işaretçi.
O zaman bağımsız değişken listesinde kuyruğu işlerken scanf
,, char *
bir çıkarmaya çalışacağız. Doğru zaman var geçti string
&string[0]
ama ne zaman oldun geçti &string
sensin bağlı bir şey bu dil standart garantilemez, yani işaretçiler &string
&string[0]
-- işaretçiler nesnelerin farklı türleri ve boyutları bu başlangıç aynı yer ... ... temsil aynı şekilde.
Şimdiye kadar hangi işe yaramayacak bir sistem karşılaştığım inanmıyorum, ve muhtemelen uygulamada güvendesin. Hiçbiri az, yanlış ve bazı platformlarda başarısız olabilir. (Farazi bir örnek: "" her işaretçi tip bilgileri içeren bir uygulama. hata ayıklama Bendüşünüyorumbu C uygulaması "Lisp Makineleri" böyle bir şey yaptı.) Symbolics
Okuma/bir Dize için bir İnputStream dö...
Okuma dize içerik dosyası .Net Kompakt...
Seri dönüştürmek.() okuma kullanışlı b...
Neden Standart girdiden okuma satır Py...
Ayrıştırma ruby JSON dize...