ฉันยังใหม่กับ C และฉันพยายามเขียนเครื่องมือนี้เพื่อแก้ไขแท็ก id3 ในไฟล์เพลงจากบรรทัดคำสั่ง ฉันได้รับข้อผิดพลาดนี้:
* glibc ตรวจพบ ไม่มีสองเท่าหรือเสียหาย (ด้านบน): 0x0000000000502010 **
จากสิ่งที่ฉันได้อ่าน ฉันรู้ว่ามันเกี่ยวข้องกับการทำให้หน่วยความจำว่าง ฉันแค่ไม่แน่ใจจริงๆว่าจะไปจากที่นี่ที่ไหน อย่างไรก็ตาม ตรรกะของฉันคือ ถ้ามีแท็กอยู่ ฉันจะอ่านแท็กนั้น จากนั้นทำการเปลี่ยนแปลงใดๆ ก็ตามที่จำเป็นต้องทำจากฟิลด์ที่ระบุในบรรทัดคำสั่ง นี่คือบล็อกที่ทำให้ฉันเดือดร้อน ขอบคุณสำหรับข้อมูลเชิงลึกล่วงหน้า!
fopen(argv[1], "rb");
fseek(in_file, -128, SEEK_END);
fread(&tagTest, sizeof(struct iD3Tag), 1, in_file);
fclose(in_file);
for (x = 2; x < argc-1; x++)
{
if (strcmp(argv[x], "-title"))
strncpy(tagTest.title, argv[x+1], 30);
if (strcmp(argv[x], "-artist"))
strncpy(tagTest.artist, argv[x+1], 30);
if (strcmp(argv[x], "-album"))
strncpy(tagTest.album, argv[x+1], 30);
if (strcmp(argv[x], "-year"))
strncpy(tagTest.year, argv[x+1], 4);
if (strcmp(argv[x], "-comment"))
strncpy(tagTest.comment, argv[x+1], 28);
if (strcmp(argv[x], "-track"))
tagTest.track = atoi(argv[x+1]);
}
tagTest.seperator = 0;
fopen(argv[1], "r+b");
fseek(in_file, -128, SEEK_END);
fwrite(&tagTest, sizeof(struct iD3Tag), 1, in_file);
fclose(in_file);
fread(&tagTest, sizeof(struct iD3Tag), 1, in_file);
เป็นไปไม่ได้ โครงสร้างมีช่องว่างภายในระหว่างสมาชิกโครงสร้างเนื่องจากข้อจำกัดในการจัดตำแหน่งหน่วยความจำ ดังนั้นข้อมูลแท็กของคุณจะเสียหายเป็นหลัก... - person   schedule 05.02.2012struct iD3Tag
คืออะไร? - person pmg   schedule 05.02.2012