C'de uzun bir printf ifadesi birden çok satıra bölünebilir mi?


88

Şu ifadeye sahibim:

Ben onu bölmek istiyorum. Aşağıdakileri denedim ama işe yaramıyor.

Nasıl bölebilirim?


1
Bazı iyi öneriler verilmiştir, ancak ikisi de dört ayrı printf () çağrısı kadar açık veya sürdürülebilir olmayabilir.
Clifford

@Clifford: O zaman C ++ yazabilirsiniz, böylece cout sizin için daha iyi görünür.
test edin

Yanıtlar:


175

Bir dizgeyi birden çok satıra bölmek istiyorsanız, birden çok dizeyi her satırda bir tane olacak şekilde birleştirebilirsiniz, örneğin:


86
iki dizge arasındaki beyaz boşluğun bitiştirme olduğu az bilinen C gerçeğini açıklamak için yorum yapıyorum.
Brian Postow

2
@Lundin Her değişkenin ve değerinin kendi satırında açıkça temsil edilmesi benim için okunması çok daha kolay. Tüm değişkenleri ve değerleri tek bir satıra koyan bir IDE'de bir hata ayıklayıcı hayal edebiliyor musunuz? Yapamam. (Evet, her dizge arasına yeni satır karakterleri koymadığını biliyorum, ancak kaynak kodun okunabilirliğini hata ayıklayıcıdaki değişkenlerin okunabilirliğiyle karşılaştırıyorum)
byxor

Bu birleştirme önişlemci tarafından mı yapılmış?
debuti

23

C derleyicisi bitişik dize değişmezlerini bire yapıştırabilir, örneğin

Önişlemci, CR'yi (veya Windowsland'dansanız CR / LF'yi) saymadan, satırın son karakteri olarak ters eğik çizgi kullanabilir:


6
Birincisi zaten önerilmiştir, ikincisi , '\' işaretinden sonra herhangi bir boşluk varsa kırılması gerçeğinden muzdariptir ; meydana geldiğinde şaşırtıcı olabilecek bir hata.
Clifford

1
Bu iki örneğin hiçbirinin C ön işlemcisi ile hiçbir ilgisi yoktur.
Dan Kalıp

@Dan benim cpp anlıyor gibi görünüyor / (yukarıdaki düzenlememe bakın). Bunun standart bir davranış olduğundan emin değilim.
sigjuice

@Dan Bitişik değişmez değerlerin birleştirilmesi, önişlemci veya derleyici ile gerçekleştirilebilirken (gerçek derlemeden önceki son aşamada), işleme hattı devamı önişlemci tarafından gerçekleştirilir, aksi takdirde çok satırlı makrolar uygulanamaz. Ayrıca buraya bakın - gcc.gnu.org/onlinedocs/cpp/Initial-processing.html
qrdl

2
@qrdl: Benim hatam, ikincisi hakkında haklısın. Hat devamı her zaman ön işlemci tarafından yapılır. Bazen beni şey hatırlattı gerekir değil bir know-it-all;) Hala normal bir durumda derleyici olsa dize hazır katılır olduğunu düşünüyorum.
Dan Molding

20

Diğer bazı biçimlendirme seçenekleri:

Temaya varyasyonlar ekleyebilirsiniz. Buradaki fikir, printf()dönüşüm düzenleyicilerinin ve ilgili değişkenlerin hepsinin "güzel" dizilmiş olmasıdır ("güzel" bazı değerler için).


Burada işlevsel bir şey yok, ama daha önce hiç görmediğim yeni bir fikir. Hoşuma gitti, harika yorum @pmg!
rpj

3

C'de karmaşık fonksiyonları bölmenin fiili standart yolu bağımsız değişken başına:

Veya isterseniz:

Dizeyi bölmemelisiniz veya \bir C çizgisini kırmak için kullanmamalısınız . Bu tür bir kod hızla tamamen okunamaz / sürdürülemez hale gelir.


3

printfYukarıda görüldüğü gibi dize değişmezlerini yazdırmak için tek bir ifade kullanmanın iyi bir programlama uygulaması olduğunu düşünmüyorum ; bunun yerine aşağıdaki kod parçası kullanılabilir:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.