如何在循环中写入时动态更改文件名

时间:2014-07-31 15:33:02

标签: c

我想在20循环中打开文件。每次文件夹的名称都会发生变化。喜欢这个变量1,变量2,变量3 ......变量20我在这里找到了同样的问题,但它没有帮助我。

以下是我的尝试:

 int l=1;
 while(l<20){                                                                            
    char filename[10];
    sprintf (filename, "variables%d", l);
                     OR
    scanf("%s", filename);                   

    FILE * fp; 
    if ((fp = fopen (filename,"rb")) == NULL){ 
    printf("Failed to Open File variables%d\n",l);}  
    ...........  Reading Data........
    fclose (fp);
    l++;
 }

我可以成功地使用Filename但是我收到错误:Failed to Open File variables1

[已解决]我只是在讨厌白痴。感谢你的关心和回答...我只是忘了添加&#34; .bin&#34; sprintf(filename,&#34;变量%d.bin&#34;,l);

2 个答案:

答案 0 :(得分:1)

您的filename缓冲区太短 - “variables1”需要10个字符加上'\0'终结符,因此此缓冲区至少需要11个字符,而当索引>&gt;时需要更多字符。 9,否则你将得到缓冲区溢出和未定义的行为。变化:

     char filename[10];

为:

     char filename[PATH_MAX];  // PATH_MAX is defined in <limits.h>

<小时/> 另外:如果你的标题建议你想这些文件,那么你需要改变:

      if ((fp = fopen (filename,"rb")) == NULL){ 

为:

      if ((fp = fopen (filename,"wb")) == NULL){ 

答案 1 :(得分:1)

你永远不会增加你的计数器。 我还建议你使用像这样的for循环

for(int i = 1; i < 20; i++){
    // Your code
}