转换要在 strcat 中使用的整数

标签 c casting char strcat

我试图通过让 for 循环递增一个计数器,然后将该计数器附加到要打开的文件名来打开不同的文件,但我一直不知道如何使用 strcat 来执行此操作。如果我理解正确,strcat 需要 2 个字符串,但我的计数器是一个 int。我怎样才能让它变成一个字符串?

for(a = 1; a < 58; a++) {
    FILE* inFile;
    int i;

    char filename[81];

    strcpy(filename, "./speeches/speech");
    strcat(filename, a);
    strcat(filename, ".txt");

肯定行不通,因为 a 是一个 int。当我尝试将它转换为 char 时,因为 a 从 1 开始到 57,我得到了所有错误的值,因为 1 处的 char 实际上不是数字 1。我被卡住了。

最佳答案

您不能将整数转换为字符串,这在 C 中是不可能的。

您需要使用显式格式化函数从整数构造字符串。我最喜欢的是snprintf() .

一旦你意识到这一点,你也可以在一次调用中格式化整个文件名,并且不需要使用 strcat()(这在性能方面相当糟糕)完全:

snprintf(filename, sizeof filename, "./speeches/speech%d", a);

将在 filename 中创建一个字符串,该字符串通过将整数 a 的十进制表示形式附加到字符串而构造。与 printf() 一样,格式字符串中的 %d 告诉 snprintf() 要插入数字的位置。你可以使用例如%03d 获取补零的三位数格式,等等。它非常强大。

关于转换要在 strcat 中使用的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22805243/

相关文章:

c - MPI C SendRecV 矩阵乘法

C - 在#defines 中表示二进制

c - C 中的运算符优先级(!= 和 |)

c - 为什么将 void 指针转换为 char 指针在这种情况下不起作用

r - 如何 'reverse melt' 一个 data.frame?

c - 如何将指向 char 的指针放入另一个指向 char 的指针

c - 为什么这个 C 代码给我一个段错误?

c - 将未知的尺寸矩阵引用传递给c函数

go - 如何将我的 2d 字符串片段转换为 []byte?

java中char的赋值