我正在尝试用 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/