如何在C中为文件名添加递增数字?
我遇到了一点小问题。我需要在一个小程序里对很多文件进行一些简单的操作。到目前为止,我决定在一个循环里处理这些文件,只需更改文件名后面的数字。这些文件的命名格式是TFxx.txt,其中xx是从1到80的递增数字。那么,我该如何在一个循环中一个接一个地打开这些文件呢?我试过这样做:
for(i=1; i<=80; i++) {
char name[8] = "TF"+i+".txt";
FILE = open(name, r);
/* Do something */
}
如你所见,第二行在Python中可以正常工作,但在C语言中却不行。我尝试用C语言做类似的编号,但还没找到合适的方法。格式不一定要和第二行一样,但我希望能得到一些建议,告诉我该如何解决这个问题。我只需要能够打开多个文件,并对它们进行相同的操作。
5 个回答
1
假设你写的只是伪代码;否则问题就不仅仅是这样了。
char name[8] = "TF"+i+".txt";
你在用加法来连接字符串,还把整数转换成字符串……在某些语言中这样做是合理的,但在C语言中,+ 只是用来做数字相加的……另外,FILE = open...
这个写法也有问题……
char name[BUFLEN];
sprintf(name, "TF%d.txt", i);
你可以用 snprintf(name, BUFLEN, "TF%d.txt")
来填充你的文件名,这样会更好,但这个是C99的写法,而前面的那个是C89的写法。
要打开文件,可以用类似 FILE *fh = fopen(name, "r")
这样的代码来读取文件。
1
除了Daniels的回答,我想补充一下,char name[8]
这个数组应该稍微大一点,以便能放下结束符'\0'
,比如可以改成char name[20];
另外,FILE = open(name,r);
这行代码应该改成FILE * fp = fopen(name,"r");
5
你可以这样使用sprintf:
for(i=0; i<=80; i++) {
char name[32];
memset(name, 0, sizeof(name));
FILE *fp;
sprintf(name, "TF%d.txt", i);
fp = fopen(name, "r");
/* Do something */
}