gpt4 book ai didi

c - 内存故障 (CoreDump) - 在 sprintf 中使用 strstr 函数时

转载 作者:行者123 更新时间:2023-11-30 19:14:12 27 4
gpt4 key购买 nike

我使用 strstr 函数在字符串 2 中查找字符串 1,并使用 sprintf 将结果分配给变量。但是,如果找不到匹配的字符串,则在向变量分配空指针时会出现“内存故障(核心转储)”错误。可以帮助我错过内存分配的地方。 (注意:相同的代码在 HP c 中编译时效果很好,但在 Solaris gcc 编译器中则不然。

#include <stdio.h>

int main() {
char s1 [] = "My Car is Green";
char te [300];
sprintf(te,"%s",strstr (s1, "Car"));
printf("Result : %s\n",te);
te[0]='\0';
sprintf(te,"%s",strstr (s1, "Where"));
printf("Result : %s\n",te);
te[0]='\0';
}


Output:
Result : Car is Green
Memory fault(coredump)

请帮我解决这个问题吗?

最佳答案

将 NULL 传递给 sprintf 可能会导致未定义的行为,即使您尝试执行下面的程序也会崩溃。

   int main ()

{
char buffer [50];
int n, a=5, b=3;
sprintf (buffer, "%s",(char*)NULL);

return 0;
}

类似地,在您的程序中 strstr (s1, "Where") 返回 NULL 并且该值将传递给 sprintf 。

关于c - 内存故障 (CoreDump) - 在 sprintf 中使用 strstr 函数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34504702/

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