c - strrcr() 函数导致内存损坏
问题描述
我只是尝试编写一个小函数来使用 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,'.');
}
推荐阅读
- php - 显示失败消息并停止处理订单、付款、用户 - CSCART
- vba - vba 从定义的循环复制并粘贴到设置单元格中
- php - WooCommerce 分页 + Ajax WP_Query
- python - Python OpenCV libpng 警告:iCCP:已知不正确的 sRGB 配置文件
- php - 修复注册PHP函数
- google-analytics - BigQuery:回访次数与谷歌分析数据不匹配
- amazon-dynamodb - 哪些 AWS 资源受益于到 AWS Lightsail 的带宽传输
- javascript - 如何从 html 联系表单提交按钮调用 java web 服务以发送电子邮件?
- android - Ionic Build 在 10 秒内失败(节点:15188)[DEP0018] 弃用警告:
- javascript - HTML Javascript:将复选框值正确传递给 .js 函数,但网页不显示数据