转换整数以在strcat中使用

时间:2014-04-02 08:10:26

标签: 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时,因为从1开始并且转到57,我得到所有错误的值,因为1处的char实际上不是数字1 ..我被卡住了。

3 个答案:

答案 0 :(得分:8)

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

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

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

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

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

答案 1 :(得分:3)

你可以使用一个语句,

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

答案 2 :(得分:2)

你对strcat函数是正确的。它只适用于字符串。

您可以使用'sprintf'功能。您对以下代码的修改:

char append[2]; //New variable
for(a = 1; a < 58; a++) {
  FILE* inFile;
  int i;

  char filename[81];

  strcpy(filename, "./speeches/speech");
  sprintf(append,"%d",a); // put the int into a string
  strcat(filename, append); // modified to append string
  strcat(filename, ".txt");