我很难从与exe不同的文件夹中的目录中打开文件。我设法读了一个文件。但是如何使用程序读取循环目录中存在的多个文件。
用于单个文件处理的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fp, *tp, *tl;
char str_buff[1024] = { FALSE };
char str[125];
char strlengths[MAX_NO_OF_STRINGS]= { FALSE };
//int Result;
//int string_startflag = FALSE;
int string_cntr = FALSE,i = 0, n = 0;
fp = fopen("D:/folder/language/stringEnglish.h", "r");
tp = fopen("New Text Document.txt", "w"); // open the file to Write
tl = fopen("New Length Document.txt", "w"); // open the file to Write lengths
while (NULL != fgets(str_buff, sizeof(str_buff), fp))
{
sscanf(str_buff, "%*[^\"]%*c%[^\"]%*c%*[^\n]%*c", str);
//printf("%s\n", str);
if (string_cntr > 6)
{
if (string_cntr<= MAX_NO_OF_STRINGS)
{
fprintf(tp, "%s\n", str);
strlengths[i] = strlen(str);
i++;
}
}
string_cntr++;
}
for(n=0;n<(MAX_NO_OF_STRINGS-6);n++)
{
fprintf(tl,"%d\n",strlengths[n]);
}
fclose(fp);
fclose(tp);
fclose(tl);
return 0;
}
所以我能够处理文件来解析文件中的变量并获取字符串的长度。问题是如何以文件夹语言打开多个文件我有文件名:
stringItalian.h,stringLatvian.h,stringSlovakian.h,stringSlovenian.h,stringSpanish.h,stringSwedish.h,stringTurkish.h,stringUkrainian.h
如何在循环中打开这些名称的文件?
还有什么方法可以一般地给出文件夹D:/folder/language
的路径吗?
提前致谢。
答案 0 :(得分:0)
您可以将路径作为命令行参数传递到您的程序中,如果它是第一个参数,则从argv[1]
读取它的值,然后遍历您想要读取的不同文件:
int main(int argc, char* argv[])
{
...
const char* files[] = {"stringItalian.h", "stringLatvian.h",
"stringSlovakian.h", "stringSlovenian.h",
"stringSpanish.h", "stringSwedish.h",
"stringTurkish.h", "stringUkrainian.h"};
int i;
char fullpath[256];
for (i=0; i<sizeof(files)/sizeof(files[0]); i++) {
strcpy(fullpath, argv[1]);
strcat(fullpath, files[i]);
fp = fopen(fullpath, "r");
答案 1 :(得分:0)
我建议首先将文件的实际解析放入一个单独的函数中,这样就可以只使用文件名调用该函数。
最简单的方法是使用一个包含文件名的表,然后遍历此表,将文件名提供给刚刚创建的函数。
答案 2 :(得分:0)
您可以通过将函数放在函数中来重写程序,例如processFile(char * fileName),然后使用完整路径文件名调用该函数,例如。
processFile("D:/folder/language/stringEnglish.h");
processFile("D:/folder/language/stringItalian.h");
此外,您可以将文件名放入文件中处理,并重写程序以循环该文件中的行,并使用找到的文件名调用该函数。
答案 3 :(得分:0)