Yanıtlar:
Bunun gibi bir çift '%' göndererek kaçabilirsiniz: %%
Örneğinizi kullanma:
printf("hello%%");
'%' İşaretinden kaçmak sadece printf içindir. Yaparsan:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
Yazdırılacak: This is a's value: %%
%
özgüdür printf
, değil mi?
\045
parçası olan ve derlendiğinde dönüşecek olan derleme zamanı kaçışıdır. bir çalışma zamanı işlevidir, bu nedenle C kaynak koduyla değil dizenizin baytlarıyla ilgilenir ve işlevin parçaları olan kendi kaçış dizilerine sahiptir . Kısacası, "bir dilin içindeki dil" dir ve aynı sonucu verir . %
printf
printf
printf("This is a's value: %s\n", a);
printf("This is a's value: \045\0163\012", a);
printf("hello%c", '%');
. Ancak, %%
başka bir argüman kullanmadığı için daha iyidir.
Diğerlerinin söylediği gibi, %%% 'den kaçacaktır.
Ancak, bunu asla yapmamanız gerektiğini unutmayın:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
Bir dizeyi her yazdırmanız gerektiğinde, her zaman, her zaman, her zaman
printf("%s", c)
gömülü bir% 'nin soruna neden olmasını önlemek için [bellek ihlalleri, segfault vb.]
Dizede biçim yoksa, puts
(veya fputs
) öğesini kullanabilirsiniz :
puts("hello%");
dizede bir biçim varsa:
printf("%.2f%%", 53.2);
Yorumlarda belirtildiği gibi , çıktıya puts
a ekler \n
ve fputs
eklemez.
puts
. puts
Dizeleri basmayı hiç düşünmedim ve doğrudan atladım printf
. Artık değil.
Kendisi ile ...
printf("hello%%"); /* like this */
Nitpick: (ve ) işlev ailesi için biçimi belirten dizede
gerçekten kaçmazsınız .%
printf()
scanf()
%
İçinde printf()
(ve scanf()
fonksiyonların) ailesi, bir dönüşüm şartname başlar. Dönüştürme belirtimi kurallarından biri, %
bir dönüşüm belirteci olarak ( %
dönüştürme belirtimini başlatan hemen sonra ) bir '%'
karakterin dönüştürülmüş argüman olmadan yazılmasına neden olduğunu belirtir .
Dizenin içinde gerçekten 2 '%'
karakter vardır (kaçan karakterlerin aksine: "a\bc"
3 boş karakter olmayan "a%%b"
bir dizedir; 4 boş karakter olmayan bir dizedir).
C'deki ters eğik çizgi, dizelerdeki karakterlerden kaçmak için kullanılır. Dizeler% 'i özel bir karakter olarak tanımaz ve bu nedenle kaçış gerekmez. Printf başka bir konudur: %% öğesini yazdırmak için %% kullanın.
Kullanabilirsiniz %%:
printf("100%%");
Sonuç:
100%
%%
yazdırmak için kullanmanız gereken yanlış biçim belirteci kullanıyorsunuz %
. Kodunuz:
printf("hello%%");
Sadece %
iki kez kullanabilirsiniz , yani"%%"
Misal:
printf("You gave me 12.3 %% of profit");