gpt4 book ai didi

转换要在 strcat 中使用的整数

转载 作者:太空狗 更新时间:2023-10-29 15:46:49 24 4
gpt4 key购买 nike

我试图通过让 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com