คือผมมีปัญหาเกี่ยวกับการรับค่า สตริง อ่ะครับ
ตัวอย่างนี้จะคล้ายกับที่ทำอยู่นะครับ
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 มันกลับไม่มีอะไรแสดงเลย เพราะอะไรครับ
ปล. เป็นแค่โค้ดตัวอย่าง ไม่ได้คอมไพล์ดูนะครับ
ลอง
scanf("%3s",a);
ดูครับ
scanf() ผิดครับ จะรับ string ก็ต้อง %s
ตรงที่ compare ด้วย ภาษา C ใช้ if(a=="am") ไม่ได้ ต้องใช้ strcmp() ครับ
:: DigiKin8 ::
+1
compare string ใช้ if(strcmp( a , "am") == 0){}
%s ครับ
a=="am" เป็นการเอา address มาเทียบกัน ไม่ใช่ String
a[i] --> value
a --> address
เพิ่มเติมนิดนึงจากข้างบนๆ นอกจากเรื่อง strcmp แล้ว scanf มันไม่ควรใช้รับค่าสตริง ในตัวอย่างโค้ดนี้ จะเกิด buffer overflow ได้ง่ายมาก (เช่นพิมพ์ไป 3 ตัวอักษร AAA ก็เกิดแล้ว เพราะจองที่ไว้แค่ 3 แต่ AAA ต้องการที่ขนาด 4 สำหรับ \0 string termination)
ส่วนใหญ่จะแนะนำให้ใช้ fgets แทนครับ
iPAtS