сделать новую строковую переменную равной целочисленной переменной в c - PullRequest
0 голосов
/ 07 октября 2019

Я относительно новичок в C, в основном из python, и я хочу иметь возможность создать новую переменную в виде строки, чтобы использовать функцию strcat () на основе целого числа. Например, если каждый раз, когда я зацикливаюсь на нем и увеличиваю целое число, 1, новая переменная, которая является строкой / символом, теперь будет "1", а 2, "2" и т. Д., Так что при использовании strcat (dest,значение), он создает строку, например, с именем: (1-й цикл) "TEST1.txt", (2-й цикл) "TEST2.txt" и так далее. Если это не имеет смысла, лучший способ описать это на python, чтобы добиться того же, скажем:

a = 1
while True:
    file = open("Test" + str(a) + ".txt", "w")
    file.close()
    a += 1
    if a == 10:
        break

Я знаю, как это сделать со строками, например, еслиa не является целым числом, из кода Python для выполнения «Test» + str (a) в c, я могу сделать:

char* a = "test";
char* b = "1";
strcat(a, b);

, если я напечатаю, что я получу «test1», ноМне нужно, чтобы сначала было целое число, а затем строка, чтобы я мог увеличить его, спасибо

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

В стандартной библиотеке stdlib.h вы можете использовать функцию itoa для возврата строки с целым числом. (Для справки, вы можете сделать наоборот, используя atoi)

char *  itoa ( int value, char * str, int base );

У меня нет ссылки на C, чтобы передать функцию, но некоторые ссылки, с которых можно начать, это либо здесь или здесь .

0 голосов
/ 07 октября 2019

Нет большого смысла использовать strcat в этом случае. Просто напишите

char file_name[] = "test0.txt";

do
{
    ++file_name[4];

    FILE *fp = fopen( file_name , "w")
    //...
    fclose( fp )
} while ( file_name[4] != '9' );

Или вы можете использовать функцию sprintf, например,

#include <stdio.h>

int main(void) 
{
    char name[10];
    int i = 0;

    do
    {
        sprintf( name, "%s%1d%s", "Test", ++i, ".txt" );
        printf( "%s\n", name );
    } while ( i != 9 );

    return 0;
}

Вывод программы:

Test1.txt
Test2.txt
Test3.txt
Test4.txt
Test5.txt
Test6.txt
Test7.txt
Test8.txt
Test9.txt
...