Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在for循环中创建具有不同名称的文件?_C_For Loop - Fatal编程技术网

C 如何在for循环中创建具有不同名称的文件?

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

我最近才开始学习c语言,但我还没有弄明白这一点。我正在尝试设置一个for循环,该循环将创建多个名称相差一个数字的.txt文件。即,对于第一个循环,将创建filename1.txt,对于第二个循环,将创建filename2.txt,依此类推。

只需使用
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”“
。有很多方法可以用嵌入引号构造字符串。