[英]Conflicting types when returning array of strings
我想从getListOfFiles()捕获一个文件名(字符串)数组,并在我的主目录中使用它。 我已经尝试了所有想法,但仍然出现错误:
gcc testowe.c -o test testowe.c: In function ‘main’:
testowe.c:8:15: warning: implicit declaration of function ‘getListOfFiles’ [-Wimplicit-function-declaration]
char **list = getListOfFiles(argv[1]);
testowe.c:8:15: warning: initialization makes pointer from integer without a cast [-Wint-conversion]
testowe.c: At top level:
testowe.c:11:8: error: conflicting types for ‘getListOfFiles’
char** getListOfFiles(char *path) {
testowe.c:8:15: note: previous implicit declaration of ‘getListOfFiles’ was here
char **list = getListOfFiles(argv[1]);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
int main(int argc, char *argv[])
{
char **list = getListOfFiles(argv[1]);
}
char** getListOfFiles(char *path) {
int n=0, i=0;
DIR *d;
struct dirent *dir;
d = opendir(path);
while((dir = readdir(d)) != NULL) {
if ( !strcmp(dir->d_name, ".") || !strcmp(dir->d_name, "..") )
{
} else {
n++;
}
}
rewinddir(d);
char **filesList;
filesList = malloc((n + 1)*sizeof(char*));
while((dir = readdir(d)) != NULL) {
if ( !strcmp(dir->d_name, ".") || !strcmp(dir->d_name, "..") ){
}else {
filesList[i] = (char*) malloc (strlen(dir->d_name)+1);
strncpy (filesList[i],dir->d_name, strlen(dir->d_name) );
i++;
}
}
filesList[i] = NULL;
closedir(d);
return filesList;
}
什么是真正的问题,原因是我认为所有类型和指针看起来都很好?
阅读警告: implicit declaration of function 'getListOfFiles'
。
您正在使用之前从未见过的getListOfFiles(),因此假定它返回一个int值。 您可以通过在定义函数之前先声明函数来解决。 char** getListOfFiles(char *path)
在文件顶部附近,对于这种简单情况,只需将整个定义移到main()
之前
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.