C 如何在for循环中创建具有不同名称的文件?
我最近才开始学习c语言,但我还没有弄明白这一点。我正在尝试设置一个for循环,该循环将创建多个名称相差一个数字的.txt文件。即,对于第一个循环,将创建filename1.txt,对于第二个循环,将创建filename2.txt,依此类推。只需使用C 如何在for循环中创建具有不同名称的文件?,c,for-loop,C,For Loop,我最近才开始学习c语言,但我还没有弄明白这一点。我正在尝试设置一个for循环,该循环将创建多个名称相差一个数字的.txt文件。即,对于第一个循环,将创建filename1.txt,对于第二个循环,将创建filename2.txt,依此类推。只需使用sprintf生成名称即可。比如: #include <limits.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv
sprintf
生成名称即可。比如:
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char **argv)
{
const char *base = argc > 1 ? argv[1] : "filename";
int limit = argc > 2 ? strtol(argv[2], NULL, 10) : 10;
const char *suffix = argc > 3 ? argv[3] : "txt";
for( int i = 0; i < limit; i++ ){
char path[PATH_MAX];
snprintf(path, PATH_MAX, "%s%d%s%s", base, i,
*suffix ? "." : "", suffix);
FILE * fp = fopen(path, "w"); /* Caution: will truncate extant files */
if( fp == NULL ){
perror(path);
continue;
}
/* ... */
if( fclose(fp) ){
perror(path);
}
}
return 0;
}
#包括
#包括
#包括
int
主(内部argc,字符**argv)
{
常量char*base=argc>1?argv[1]:“文件名”;
int limit=argc>2?strtol(argv[2],NULL,10):10;
常量字符*后缀=argc>3?argv[3]:“txt”;
对于(int i=0;i
键使用的是sprintf
,这是创建数字格式字符串的标准方法
#include <stdio.h>
void loop_through_filenames(num_files)
{
// memory buffer for the filename.
char filename[32];
// File Pointer.
FILE * fp;
int i;
for(i=0; i<num_files; i++){
// Place filename in the buffer.
sprintf(filename, "Flaming_Dragon_%d.txt", i);
// Open the file
fp = fopen(filename, 'w');
// Do something if you want.
// Close the file.
fclose(fp);
}
}
#包括
void loop_到_文件名(num_文件)
{
//文件名的内存缓冲区。
字符文件名[32];
//文件指针。
文件*fp;
int i;
对于(i=0;i使用sprintf
生成名称。命令行参数会是什么样子,使得*suffix
计算为False?即,如何通过命令行args传递Null指针?@CSStudent7782它不能为Null(如果为Null,则*suffix
将导致运行时错误(sigsegv)),但它可以是空的。例如/a.out filename 10”“
哦,我明白了,那么如果你想让后缀字面上是”
,你需要使用/a.out filename 10“\”
?@CSStudent7782或/a.out filename 10”“
。有很多方法可以用嵌入引号构造字符串。