gpt4 book ai didi

c - 设置字符串为 NULL

转载 作者:行者123 更新时间:2023-11-30 17:41:25 25 4
gpt4 key购买 nike

我在分配的 RAM 中有一些元数据(mplayer 的输出),并且我正在尝试设置一些指向其中包含的字符串的指针。到目前为止,我已将这些指针声明为 char *,尽管我不确定它们是否不应该为 void *,但无论如何,代码都会扫描转发并用零替换以下换行符以按常规终止字符串,以便程序的其余部分可以使用它。

我的问题实际上是:当找不到关键字时,相关指针将没有被正确分配,因此可能指向任何地方。我尝试通过最初使用 meta[which]=NULL; 将其设置为 NULL 来解决此问题。这更加复杂,因为它们是三个。我不确定 meta[2] 是第二个字符串的第一个字符,还是第零个字符串中的第二个字符。不管怎样,它并没有像现在这样工作。

这是代码:

if (malc)   // Locate the strings of metadata information in the memory.
{
int which;
char keyword[3][23]={"ANS_metadata/artist=","ANS_metadata/title=","ANS_path="};
for (which=0;which<3;which++)
{
int memc,strc;
meta[which]=NULL;
for (memc=0,strc=0;memc<MPLAYER_MEM;memc++)
{
if (keyword[which][strc]) // Not Zero while string match is incomplete.
{
if (*(malc+memc)==keyword[which][strc])
strc++;
else
strc=0;
}
else // If we reach the end of the keyword, then we've found it.
{
meta[which]=malc+memc; // Find the end of the line and
while (*(malc+memc)!=LINEFEED) // terminate it more conventionally.
memc++; // Now meta[] points to our strings.
*(malc+memc)=0;
break;
}
}
}
}

有人有什么想法吗?谢谢。

编辑:抱歉,伙计们,我忘记了这些:

char *malc=malloc(MPLAYER_MEM);
char *meta[2];

编辑:添加了中断

最佳答案

您有 3 个关键字,因此元的长度也需要为 3:

char *meta[3];

使用 NULL 来表示缺少的关键字是正确的方法。

关于c - 设置字符串为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21110346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com