次のように定義された関数があります(Cで):
gchar **Scan_Return_File_Tag_Field_From_Mask_Code (File_Tag *FileTag, gchar code)
{
switch (code)
{
case 't': /* Title */
return &FileTag->title;
case 'a': /* Artist */
return &FileTag->artist;
case 'b': /* Album */
return &FileTag->album;
case 'd': /* Disc Number */
return &FileTag->disc_number;
case 'y': /* Year */
return &FileTag->year;
case 'n': /* Track */
return &FileTag->track;
case 'l': /* Track Total */
return &FileTag->track_total;
case 'g': /* Genre */
return &FileTag->genre;
case 'c': /* Comment */
return &FileTag->comment;
case 'p': /* Composer */
return &FileTag->composer;
case 'o': /* Orig. Artist */
return &FileTag->orig_artist;
case 'r': /* Copyright */
return &FileTag->copyright;
case 'u': /* URL */
return &FileTag->url;
case 'e': /* Encoded by */
return &FileTag->encoded_by;
case 'i': /* Ignored */
return NULL;
default:
Log_Print(LOG_ERROR,"Scanner: Invalid code '%%%c' found!",code);
return NULL;
}
}
次のような新しい条件を switch ステートメントに追加しようとしています。
case 'f':
&FileTag->artist の最初の文字を返します。
私は解決策を探してインターネット全体を精査しましたが、手ぶらで出てきました。誰にもアイデアはありますか?
更新:
役立つ場合、この機能はアプリケーション EasyTag の一部です。コードを調べたところ、ここで easytag のファイル ソート機能の新しいファイル名が決定されます。次のように、アプリケーションが音楽をディレクトリに並べ替えることができるように、新しい変数を追加しようとしています。<First letter of artist name>/<Artist>/<Album>/<Tracks>
私が間違った関数を見ている可能性は常にありますが、私の知る限りではそうです。
別の更新: この関数は思い通りに動作しました (ポインターは面白い小さなものです)。すべての助けと忍耐に感謝します!