c - 我需要有关 C 中 getFileExt() 的帮助

标签 c

我正在尝试用 C 编写一个获取文件扩展名函数。

这就是我所拥有的...

char *getFileExt(char *filename) {

    char ext[10];

    while (*filename) {
        filename++;
    }

    while (*filename != '.') {
        *(ext++) = *(--filename);               
    }   
    strrev(*ext);       
    return ext;     
}

我不断在 while 循环内的行上获取 EXC_BAD_ACCESS。我是指针的新手,所以我猜我对它们做错了什么。

为什么我不能将 filename 指针的值赋给 ext

谢谢

最佳答案

你不应该返回一个本地数组的指针。当函数失去作用域并且指针将悬空时,数组数据将丢失。

此外,您不能更改数组指针的值。这就是您收到 EXC_BAD_ACCESS 错误的原因。您可以使用整数索引或指向第一个条目的 char * 指针。

顺便说一下:有一个函数 strrchr(请参阅 here)可以为您提供字符串中某个字符的最后一次出现。您可以返回结果指针,因为它指向文件名数组中的有效位置,该位置在函数外也有效。

关于c - 我需要有关 C 中 getFileExt() 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831238/

相关文章:

c - 类型转换是一元操作吗?

c - 将自己的库添加到 QT creator C 项目

c - 内存如何分配给c中的宏?

c - C 是否有类似于 C++ 的命名空间?

计算C中的嵌套根

mysql - libmemcached 存储 mysql 结果

c - 多客户端 UDP 聊天

c - 函数调用中数据复制到函数参数不匹配

c - 段错误,大型数组

c++ - C++ 的#include 子句的 Vim 自动完成