【发布时间】:2010-09-06 19:32:18
【问题描述】:
我写了一个读取文件的代码
以下代码有什么问题,如果我打印任何 arrayItem,我总是得到最后一个文件名
#include <stdio.h>
#include <string.h>
char **get_files()
{
FILE *fp;
int status;
char file[1000];
char **files = NULL;
int i = 0;
/* Open the command for reading. */
fp = popen("ls", "r");
if (fp == NULL) {
printf("Failed to run command\n" );
//exit;
}
while (fgets(file, sizeof(file)-1, fp) != NULL) {
files = (char **)realloc(files, (i + 1) * sizeof(char *));
//files[i] = (char *)malloc(sizeof(char));
files[i] = file;
i++;
}
printf("%s", files[0]);
return files;
}
int main()
{
char **files = NULL;
int i =0 ;
files = get_files("");
}
【问题讨论】:
-
关于此代码示例本身:
main未终止,缺少 return 和 }。函数调用不尊重原型。此外,在 C 中,没有参数的函数在括号内使用 void。 -
我喜欢 php、java 和 flex 编程,对于一些 cron 作业处理,我是第一次写这个。无论如何感谢您的建议