【问题标题】:make a new string variable equal to an integer variable in c在c中使一个新的字符串变量等于一个整数变量
【发布时间】:2019-10-07 10:56:18
【问题描述】:

我对 C 语言比较陌生,主要来自 python,我希望能够创建一个新变量作为字符串来使用基于整数的函数 strcat()。例如,如果每次我循环遍历它并递增一个整数 1,则作为字符串/字符的新变量现在是“1”,而 2、“2”等等,这样当使用 strcat(dest,值),它会生成一个字符串,例如:(第一个循环)“TEST1.txt”,(第二个循环)“TEST2.txt”等等。如果这真的没有意义,我可以描述它的最好方法是在 python 中,实现完全相同的事情,比如:

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

我知道如何处理字符串,例如如果 a 不是整数,从 python 代码中执行“测试”+ str(a) 在 c 中,我可以做到:

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

如果我打印我会得到“test1”,但我需要它首先是一个整数,然后是一个字符串,以便我可以增加它,谢谢

【问题讨论】:

  • 你想要sprintf

标签: python c codeblocks


【解决方案1】:

在这种情况下使用 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

【讨论】:

  • 我想你的意思是fopenfclose
  • 只是在此徘徊,当您执行 char 文件名 [] 时,您可以键入多大的字符串,因为我原以为您必须指定数组的大小,例如:char 文件名[50] = "test0.txt";
  • @404TeamNotFound 在这种情况下,数组的大小由初始值设定项的数量决定,初始值设定项的数量由字符串文字中的字符数(包括其终止零)决定。
  • 大声笑,这确实表明我有很多东西要学 c,但我假设这意味着限制取决于我输入的字符串的长度或诸如此类的东西,有点像 python 如何整数没有限制,但只在必要时使用更多内存? Eh idk,但我也不知道初始值设定项、字符串文字和终止零是什么意思,但感谢您的回复
  • ++file_name[4] 是不必要的脆弱(在几个方面)。
【解决方案2】:

在标准库 stdlib.h 中,您可以使用函数 itoa 返回一个给定整数的字符串。 (作为参考,你可以使用 atoi 做相反的事情)

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

我没有关于该函数的 C 引用,但一些可以帮助您入门的链接是 herehere

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 2013-02-01
相关资源
最近更新 更多