Re: [問題] 讀id3v1 tag用fread和fgetc的差異?
: 餵入的資料(Input):
: .mp3
: 預期的正確結果(Expected Output):
: TAG
: 錯誤結果(Wrong Output):
: TAGB ?
: #define TAG_SIZE 3
: typedef struct {
: char tag[TAG_SIZE];
: char title[TITLE_SIZE];
: char artist[ARTIST_SIZE];
: char album[ALBUM_SIZE];
: char year[YEAR_SIZE];
: char comment[COMMENT_SIZE];
: char zero;
: char track;
: char genre;
: } MP3_TAG;
: int main(int argc, char *argv[])
: {
: int i = 0;
: MP3_TAG mp3_tag;
: char *file_path;
: FILE *fin;
: file_path = "c:/Bounce.mp3";
: fin = fopen(file_path,"rb");
: if(fin == NULL)
: {
: printf("file doesn't exist!!\n");
: }
: fseek(fin,-MP3_TAG_SIZE,SEEK_END);
: fread(&mp3_tag.tag,1,sizeof(TAG_SIZE),fin);
: printf("MP3_TAG= %s\n", mp3_tag.tag);
: system("PAUSE");
: return 0;
: }
: 以上code會印出 TAGB ?
: 但 fread 那行如果換成
: while(i<TAG_SIZE)
: {
: mp3_tag.tag[i] = fgetc(fin);
: i++;
: }
: 則會正確顯示TAG
: fread不是一次讀一個byte?
: 有試過用ftell印出fin的位址是正確的,但讀出來就是有多餘的字元? 何解@@
: 想很久無法解決印出多餘字元的問題..
沒寫過mp3相關的program, 不過要不要試試
memset(&mp3_tag,0,sizeof(MP3_TAG));
跟
mp3_tag.tag[TAG_SIZE]='\0';
看看
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.250.104
→
12/19 16:41, , 1F
12/19 16:41, 1F
→
12/19 16:42, , 2F
12/19 16:42, 2F
→
12/19 17:29, , 3F
12/19 17:29, 3F
→
12/19 17:29, , 4F
12/19 17:29, 4F
→
12/19 17:30, , 5F
12/19 17:30, 5F
→
12/19 17:42, , 6F
12/19 17:42, 6F
推
12/19 17:43, , 7F
12/19 17:43, 7F
→
12/19 17:43, , 8F
12/19 17:43, 8F
→
12/19 17:44, , 9F
12/19 17:44, 9F
→
12/19 17:48, , 10F
12/19 17:48, 10F
推
12/19 17:51, , 11F
12/19 17:51, 11F
→
12/19 17:51, , 12F
12/19 17:51, 12F
→
12/19 17:52, , 13F
12/19 17:52, 13F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):