Tags:

คือผมมีปัญหาเกี่ยวกับการรับค่า สตริง อ่ะครับ

ตัวอย่างนี้จะคล้ายกับที่ทำอยู่นะครับ

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 มันกลับไม่มีอะไรแสดงเลย เพราะอะไรครับ
ปล. เป็นแค่โค้ดตัวอย่าง ไม่ได้คอมไพล์ดูนะครับ

Get latest news from Blognone
By: geumatee
ContributoriPhoneAndroidWindows
on 2 November 2012 - 00:48 #500106

ลอง

scanf("%3s",a);

ดูครับ

By: PiKO
ContributorAndroid
on 2 November 2012 - 01:05 #500113

scanf() ผิดครับ จะรับ string ก็ต้อง %s

ตรงที่ compare ด้วย ภาษา C ใช้ if(a=="am") ไม่ได้ ต้องใช้ strcmp() ครับ


:: DigiKin8 ::

By: a2b2c517 on 2 November 2012 - 12:28 #500433 Reply to:500113

+1

compare string ใช้ if(strcmp( a , "am") == 0){}

By: Ginosty
AndroidWindows
on 2 November 2012 - 18:32 #500647

%s ครับ
a=="am" เป็นการเอา address มาเทียบกัน ไม่ใช่ String

a[i] --> value
a --> address

By: ipats
ContributorNOOBIn Love
on 6 November 2012 - 00:20 #502017

เพิ่มเติมนิดนึงจากข้างบนๆ นอกจากเรื่อง strcmp แล้ว scanf มันไม่ควรใช้รับค่าสตริง ในตัวอย่างโค้ดนี้ จะเกิด buffer overflow ได้ง่ายมาก (เช่นพิมพ์ไป 3 ตัวอักษร AAA ก็เกิดแล้ว เพราะจองที่ไว้แค่ 3 แต่ AAA ต้องการที่ขนาด 4 สำหรับ \0 string termination)

ส่วนใหญ่จะแนะนำให้ใช้ fgets แทนครับ


iPAtS