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