我试图从目录中的多个文本文件中读取变量。当我运行代码时,在我尝试读取每个文本文件中的行数后会出现故障。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <dirent.h>
int main()
{
DIR *ptr;
double variable;
int n, i;
FILE *f;
char ch1;
n=0;
i=0;
struct dirent *directory;
ptr = opendir("faketext");
while((directory = readdir(ptr)) != NULL)
{
if ( !strcmp(directory->d_name, ".") || !strcmp(directory->d_name, "..") )
{
} else {
n++;
}
}
rewinddir(ptr);
char *filesList[n];
//Put file names into the array
while((directory = readdir(ptr)) != NULL) {
if ( !strcmp(directory->d_name, ".") || !strcmp(directory->d_name, "..") )
{}
else {
filesList[i] = (char*) malloc (strlen(directory->d_name)+1);
strncpy (filesList[i],directory->d_name, strlen(directory->d_name) );
i++;
}
}
closedir(ptr);
int filt_len[n];
for(i=0; i<n; i++){
char buf[0x100];
snprintf(buf, sizeof(buf), "faketext/%s", filesList[i]);
f = fopen(buf, "r");
if(f == NULL){
printf("Trouble opening file.");
}
for (ch1 = getc(f); ch1 != EOF; ch1 = getc(f)){
if (ch1 == '\n')
filt_len[i] = filt_len[i] + 1;
}
fscanf(f, "%lf", &variable);
printf("%f\t%d\n",variable, filt_len[i]);
fclose(f);
}
return 0;
}
如果我不包括行计数功能,这个程序可以完美运行。并且线计数功能在该程序之外运行良好 - 我已经多次使用它以取得巨大成功。
我目前正在运行程序,其中包含四个测试文本文件,每个文件中包含两个或三个变量。输出应该是每个文本文件中的第一个变量(非零十进制),后跟数字2或3.
当我运行程序时,这是输出:
0.000000 14
0.000000 35
0.000000 17
0.000000 4199674
有没有人对为什么这不起作用有任何想法?我不明白为什么这两个功能可以单独工作但不能一起工作。
(C新手和自学成才。)