PDA

View Full Version : แยกข้อมูลจาก string



zinyx
20-07-2007, 09:31 PM
อ่าคือ สมมติผมมี string ข้อความนึง




1,Zinyx,5,6,7

[/b]


ที่ผมต้องการคือ อยากให้แยกมาเก็บใน Variables

ผมใช้โค้ดแบบนี้




sscanf(str,"%d,%s,%d,%d,%d",id,name,para1,para2,para3);

[/b]

แต่ไม่เวิค

id = 1
name = "Zinyx,5,6,7"
มันเปนงี้อะครับ ขอคำแนะนำด้วยครับ

aumNaKab
20-07-2007, 10:07 PM
ผมไม่ค่อยแน่ใจนะคับ ลองวิธีนี้ดูไหมคับ (พอดีผมไม่ได้ลง C++ ในเครื่อง)

เท่าที่ผมดูจากเว็บต่างประเทศ ถ้าเป็นตัวเลข เขาจะใช้ Pointer ในการอ้างอิงนะคับ

อันนี้จากเว็บญี่ปุ่น แต่ผมแปลงเป็นภาษาอังกฤษแทนนะคับ

[code]
#include

zinyx
22-07-2007, 01:04 AM
ขอบคุณมากครับ แต่

ไม่เป็นผลครับ ที่ได้ออกมาคือ



Hello, Zinyx,5,6,7. Your id is 1 And para1 = 4072496, para2 = 4072528, para3 = 2
009315348
[/b]

แต่ พอผมลองเปลี่ยนจาก , เป็น ' ' (สเปซ) ได้ผลครับ



main()
{
char str[] = "1 Zinyx 5 6 7";
int id, para1, para2, para3;
char name[20];

sscanf(str,"%d %s %d %d %d",&id,name,&para1,&para2,&para3);
printf("Hello, %s. Your id is %d And para1 = %d, para2 = %d, para3 = %d",name,id,para1,para2,para3);
}
[/b]


Output

Hello, Zinyx. Your id is 1 And para1 = 5, para2 = 6, para3 = 7[/b]

อื้ม ไม่ค่อยเข้าใจเหมือนกันครับ

chein249
09-08-2007, 09:10 PM
sscanf มันจะตัดได้แต่ white space ครับ
พอเจอ comma มันก็จะคิดว่าเป็น ส่วนหนึ่งของ string
มันก็เลยอ่าน name ได้เป็น Zinyx,5,6,7 น่ะครับ

อ้างอิงจาก
http://www.cplusplus.com/reference/clibrar...dio/sscanf.html (http://www.cplusplus.com/reference/clibrary/cstdio/sscanf.html)

ถ้าอยากให้ตัด comma ได้ ลองใช้ strtok ดูนะครับ
http://www.cplusplus.com/reference/clibrar...ing/strtok.html (http://www.cplusplus.com/reference/clibrary/cstring/strtok.html)