คำถามติดแท็ก format-specifiers

5
ตัวระบุรูปแบบที่ถูกต้องสำหรับ double ใน printf
ตัวระบุรูปแบบที่ถูกต้องสำหรับdoubleใน printf คืออะไร มัน%fหรือมันคือ%lf? ฉันเชื่อว่ามัน%fแต่ฉันไม่แน่ใจ ตัวอย่างโค้ด #include <stdio.h> int main() { double d = 1.4; printf("%lf", d); // Is this wrong? }

12
คุณจะทำการฟอร์แมท int long ที่ไม่ได้ลงนามโดยใช้ printf ได้อย่างไร?
#include <stdio.h> int main() { unsigned long long int num = 285212672; //FYI: fits in 29 bits int normalInt = 5; printf("My number is %d bytes wide and its value is %ul. A normal number is %d.\n", sizeof(num), num, normalInt); return 0; } เอาท์พุท: My number is 8 bytes wide …

8
วิธีการพิมพ์“ ไม่ได้ลงนามนาน” ใน C?
ฉันไม่สามารถเข้าใจวิธีการพิมพ์ unsigned longประเภทข้อมูลใน C สมมติว่าunsigned_fooเป็นunsigned longแล้วฉันลอง: printf("%lu\n", unsigned_foo) printf("%du\n", unsigned_foo) printf("%ud\n", unsigned_foo) printf("%ll\n", unsigned_foo) printf("%ld\n", unsigned_foo) printf("%dl\n", unsigned_foo) และพวกเขาทั้งหมดพิมพ์-123123123หมายเลขบางชนิดแทนที่unsigned longฉันมี


9
ฉันจะพิมพ์ประเภทเช่น off_t และ size_t ได้อย่างไร
ฉันพยายามที่จะพิมพ์ประเภทเช่นและoff_t size_tตัวยึดตำแหน่งที่ถูกต้องสำหรับprintf() อุปกรณ์พกพาคืออะไร หรือมีวิธีที่แตกต่างอย่างสิ้นเชิงในการพิมพ์ตัวแปรเหล่านั้น?


11
เหตุใด printf ที่มีอาร์กิวเมนต์เดียว (ไม่มีตัวระบุการแปลง) จึงเลิกใช้งาน
ในหนังสือที่ฉันกำลังอ่านมีเขียนว่าprintfด้วยอาร์กิวเมนต์เดียว (โดยไม่มีตัวระบุการแปลง) จะเลิกใช้งานแล้ว ขอแนะนำให้เปลี่ยน printf("Hello World!"); ด้วย puts("Hello World!"); หรือ printf("%s", "Hello World!"); ใครช่วยบอกทีว่าทำไมถึงprintf("Hello World!");ผิด? มีเขียนไว้ในหนังสือว่ามีช่องโหว่ ช่องโหว่เหล่านี้คืออะไร?

3
ตัวระบุรูปแบบ size_t อิสระของแพลตฟอร์มใน c?
ฉันต้องการพิมพ์ตัวแปรประเภทsize_tC แต่ปรากฏว่าsize_tมีการใช้นามแฝงเป็นตัวแปรประเภทต่างๆในสถาปัตยกรรมที่แตกต่างกัน ตัวอย่างเช่นในเครื่องเดียว (64 บิต) รหัสต่อไปนี้จะไม่แสดงคำเตือนใด ๆ : size_t size = 1; printf("the size is %ld", size); แต่ในเครื่องอื่นของฉัน (32 บิต) รหัสด้านบนจะสร้างข้อความเตือนต่อไปนี้: คำเตือน: รูปแบบ '% ld' คาดว่าจะเป็นประเภท 'long int *' แต่อาร์กิวเมนต์ 3 มีประเภท 'size_t *' ฉันสงสัยว่านี่เป็นเพราะความแตกต่างของขนาดตัวชี้ดังนั้นบนเครื่อง 64 บิตของฉันsize_tจึงมีนามแฝงเป็น a long int( "%ld") ในขณะที่เครื่อง 32 บิตของฉันsize_tมีนามแฝงเป็นประเภทอื่น มีตัวระบุรูปแบบสำหรับsize_tหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.