คือผมมีปัญหาเกี่ยวกับการรับค่า สตริง อ่ะครับ
ตัวอย่างนี้จะคล้ายกับที่ทำอยู่นะครับ
int main()
{
char a[3];
printf("enter fm or am : ");
scanf("%d",a);
if(a=="fm")
{
printf(" AAAAAAAAAAA\n");
}
else if(a=="am")
{
printf(" BBBBBBBBBBBBB\n");
}
return 0;
}
แต่ปรากฎว่า เมื่อ input fm หรือ am มันกลับไม่มีอะไรแสดงเลย เพราะอะไรครับ
ปล. เป็นแค่โค้ดตัวอย่าง ไม่ได้คอมไพล์ดูนะครับ
on
ลอง scanf("%3s",a); ดูครับ
geumatee Fri, 02/11/2012 - 00:48
ลอง
scanf("%3s",a);
ดูครับ
scanf() ผิดครับ จะรับ string
PiKO Fri, 02/11/2012 - 01:05
scanf() ผิดครับ จะรับ string ก็ต้อง %s
ตรงที่ compare ด้วย ภาษา C ใช้ if(a=="am") ไม่ได้ ต้องใช้ strcmp() ครับ
+1 compare string ใช้
a2b2c517 Fri, 02/11/2012 - 12:28
In reply to scanf() ผิดครับ จะรับ string by PiKO
+1
compare string ใช้ if(strcmp( a , "am") == 0){}
%s ครับ a=="am" เป็นการเอา
Ginosty Fri, 02/11/2012 - 18:32
%s ครับ
a=="am" เป็นการเอา address มาเทียบกัน ไม่ใช่ String
a[i] --> value
a --> address
เพิ่มเติมนิดนึงจากข้างบนๆ
ipats Tue, 06/11/2012 - 00:20
เพิ่มเติมนิดนึงจากข้างบนๆ นอกจากเรื่อง strcmp แล้ว scanf มันไม่ควรใช้รับค่าสตริง ในตัวอย่างโค้ดนี้ จะเกิด buffer overflow ได้ง่ายมาก (เช่นพิมพ์ไป 3 ตัวอักษร AAA ก็เกิดแล้ว เพราะจองที่ไว้แค่ 3 แต่ AAA ต้องการที่ขนาด 4 สำหรับ \0 string termination)
ส่วนใหญ่จะแนะนำให้ใช้ fgets แทนครับ