重命名C 中的char变量;在for循环中

重命名C 中的char变量;在for循环中,c,char,C,Char,我是C语言的初学者,我花了很多时间在我的问题上,但我无法找到解决方案 我想使用filename_1作为C中for循环中的前缀来更新文件filename_2(char)的名称 我不想修改文件名_1的名称,因为它被其他函数使用 这是我的代码和我正在寻找的东西 #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int j; char filename_1[

我是C语言的初学者,我花了很多时间在我的问题上,但我无法找到解决方案

我想使用filename_1作为C中for循环中的前缀来更新文件filename_2(char)的名称

我不想修改文件名_1的名称,因为它被其他函数使用

这是我的代码和我正在寻找的东西

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    int j;
    char filename_1[40]="test";
    char nummbr[40];
    char *filename_2 = NULL;
    filename_2 = filename_1;
    
    
    for( j = 0; j<12; j++)
    {

        sprintf(nummbr, "%d", j); // transform int into char --> for concatenation
        
        if (j < 21){            
            strcat(filename_2, "_00");
            strcat(filename_2, nummbr);
        }else{
            strcat(filename_2, "_0");
            strcat(filename_2, nummbr);
        }  

        /* do things with the file */
        printf("member: %i %s\n",j, filename_2);
       
    }
    return 0;
}
我想要:

member: 0 test_000
member: 1 test_001
...
member: 20 test_020

在循环的每次迭代中,您都会一直附加到
filename_2
(指向
filename_1
),而不会重置,因此每次迭代只会附加到上一个循环的文本

首先,将
filename_2
设置为数组而不是指针。然后通过使用strcpy将
filename\u 1
复制到
filename\u 2
的开头,开始每次迭代

char filename_2[40];

for( j = 0; j<12; j++)
{
    strcpy(filename_2, filename_1);
    ...
charfilename_2[40];

for(j=0;jif的
\u pr\u fc
从哪里来?你是对的,这是一个输入错误。非常感谢!它起了作用。关于if语句,你是对的。
char filename_2[40];

for( j = 0; j<12; j++)
{
    strcpy(filename_2, filename_1);
    ...
if (j < 21){
if (j < 10){