我想在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);
答案 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
}