- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个定义如下的函数(用 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>
我总是有可能看到错误的函数,但据我所知,确实如此。
另一个更新:我让这个函数按照我想要的方式工作(指针是有趣的小东西),但正如下面指出的,它并没有达到我的预期。感谢大家的帮助和耐心!
最佳答案
我不太清楚为什么你的代码返回一个指向指针的指针,但这使你想要的操作稍微困难一些。由于您需要返回指针的地址,而不仅仅是指针本身,因此您必须在某处分配该新指针(然后谁来释放它?)。如果您不介意内存泄漏,则可以忽略该问题,只需分配一个指针并返回其地址。或者,您可以创建 File_Tag
的新成员,其中包含一个短字符串,其中包含 artist
的第一个字符。
glib string functions对此会有帮助,快速浏览列表显示 g_strdup_printf()
可能有用:
gchar *first = g_strdup_printf("%c", FileTag->artist[0]);
然后分配一个地方来存储first
并返回它的地址。
更新:使用 http://codesearch.google.com我好像有found where this function you're changing is used ,看起来返回值用于更改返回的字段。
// Get the target entry for this code
dest = Scan_Return_File_Tag_Field_From_Mask_Code(FileTag,mask_item->code);
// We display the text affected to the code
if ( dest && ( OVERWRITE_TAG_FIELD || *dest==NULL || strlen(*dest)==0 ) )
ET_Set_Field_File_Tag_Item(dest,mask_item->string);
如果您的代码返回一个包含艺术家姓名第一个字符的新字符串,我不确定您究竟想要做什么。上面的代码将更改新分配的字符串指向,这对实际的艺术家姓名没有影响。
关于c - C 函数返回 gchar 的问题**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805134/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!