gpt4 book ai didi

c - strrchr() 函数导致内存损坏

转载 作者:行者123 更新时间:2023-11-30 19:00:22 28 4
gpt4 key购买 nike

我只是尝试编写一个小函数来使用 strrchr() (string.h) 获取文件的扩展名 (char * file)。但是,我有一个问题,这个函数会导致内存损坏错误(我不知道确切的原因)。

我已经检查了参数文件,没问题。

当我在输入中输入“01.jpg”时,我期望得到类似“.jpg”的结果。
当输入为“”时,我正在等待结果“”。
当输入为“NA”时相同

char * getExtensionOfFile(char * file){
//create variable ext
char * ext = (char*)malloc(sizeof(char)*4);
strcpy(ext,"");

if(strlen(file)==0 || strcmp(file,"NA")==0) return ""; //If file is empty or useless (case file=="NA")

sprintf(ext,"%s",strrchr(file,'.'));

return ext;

我认为罪魁祸首是strrchr()。如果是真的,为什么?如果不 ?哪个?

我尝试用 char[] 从头开始​​重写这个函数,但它不太漂亮,我真的很想理解。

谢谢!

最佳答案

因此,在与其他人讨论后,有人找到了一个相当(好?)的解决方案。

感谢您的帮助!

解决方案(不是我自己的)

const char * getExtensionOfFile(const char * file){
if (strlen(file) == 0 || strcmp(file, "NA") == 0) return "";

return strrchr(file,'.');
}

关于c - strrchr() 函数导致内存损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59914454/

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