คำถามติดแท็ก scanf


5
ทำไม scanf () ต้องการ“% lf” เป็นสองเท่าเมื่อ printf () ไม่เป็นไรด้วยเพียงแค่“% f”
ทำไมมันจึงเป็นที่scanf()ต้องการlใน " %lf" เมื่ออ่านdoubleเมื่อprintf()สามารถใช้ " %f" โดยไม่คำนึงว่าอาร์กิวเมนต์เป็นdoubleหรือfloat? รหัสตัวอย่าง: double d; scanf("%lf", &d); printf("%f", d);

2
การอ่านสตริงด้วย scanf
ฉันสับสนเล็กน้อยเกี่ยวกับบางสิ่งบางอย่าง ฉันรู้สึกว่าวิธีที่ถูกต้องในการอ่านสตริง C ที่scanf()ไปด้วยกัน (ไม่ต้องสนใจบัฟเฟอร์ล้นที่เป็นไปได้มันเป็นเพียงตัวอย่างง่ายๆ) char string[256]; scanf( "%s" , string ); อย่างไรก็ตามต่อไปนี้ดูเหมือนว่าจะทำงานด้วย scanf( "%s" , &string ); นี่เป็นเพียงผู้รวบรวม (gcc) ของฉันโชคบริสุทธิ์หรืออย่างอื่นใช่ไหม
147 c  scanf 

11
คุณอนุญาตให้เว้นวรรคโดยใช้ scanf ได้อย่างไร
ใช้รหัสต่อไปนี้: char *name = malloc(sizeof(char) + 256); printf("What is your name? "); scanf("%s", name); printf("Hello %s. Nice to meet you.\n", name); ผู้ใช้สามารถใส่ชื่อของพวกเขา แต่เมื่อพวกเขาใส่ชื่อที่มีพื้นที่เหมือนLucas Aardvark, เพียงแค่ตัดทุกอย่างหลังจากscanf() Lucasฉันจะscanf()อนุญาตช่องว่างได้อย่างไร
129 c  string  printf  scanf  whitespace 

8
ฉันสามารถใช้อะไรกับการแปลงอินพุตแทน scanf ได้บ้าง
ฉันเห็นผู้คนบ่อยครั้งทำให้ท้อแท้ไม่ให้ผู้อื่นใช้scanfและบอกว่ามีทางเลือกที่ดีกว่า อย่างไรก็ตามสิ่งที่ฉันเห็นคือ"ไม่ใช้scanf"หรือ"นี่คือสตริงรูปแบบที่ถูกต้อง"และไม่เคยมีตัวอย่างของ"ทางเลือกที่ดีกว่า"กล่าวถึงเลย ตัวอย่างเช่นลองใช้โค้ดตัวอย่างนี้: scanf("%c", &c); สิ่งนี้อ่านช่องว่างที่เหลืออยู่ในสตรีมอินพุตหลังจากการแปลงครั้งล่าสุด วิธีแก้ปัญหาที่แนะนำตามปกติสำหรับสิ่งนี้คือการใช้: scanf(" %c", &c); scanfหรือไม่ได้ใช้งาน ตั้งแต่scanfไม่ดีสิ่งที่บางตัวเลือก ANSI C สำหรับการแปลงรูปแบบการป้อนข้อมูลที่scanfจะสามารถจัดการ (เช่นจำนวนเต็มจำนวนจุดลอยตัวและสตริง) โดยไม่ต้องใช้scanf?
125 c  scanf 

4
ตัวระบุรูปแบบสำหรับ int สั้นที่ไม่ได้ลงชื่อคืออะไร
ฉันมีโปรแกรมดังต่อไปนี้ #include <stdio.h> int main(void) { unsigned short int length = 10; printf("Enter length : "); scanf("%u", &length); printf("value is %u \n", length); return 0; } ซึ่งเมื่อคอมไพล์โดยใช้gcc filename.cคำเตือนต่อไปนี้ (ในscanf()บรรทัด) warning: format ‘%u’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘short unsigned int *’ [-Wformat] จากนั้นผมก็อ้างถึงC99 …
125 c  scanf 

4
scanf () ออกจากอักขระบรรทัดใหม่ในบัฟเฟอร์
ฉันมีโปรแกรมต่อไปนี้: int main(int argc, char *argv[]) { int a, b; char c1, c2; printf("Enter something: "); scanf("%d",&a); // line 1 printf("Enter other something: "); scanf("%d", &b); // line 2 printf("Enter a char: "); scanf("%c",&c1); // line 3 printf("Enter another char: "); scanf("%c", &c2); // line 4 printf("Done"); // line 5 …
93 c  scanf 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.