简体   繁体   中英

How to concatenate string and int in C?

I need to form a string, inside each iteration of the loop, which contains the loop index i :

for(i=0;i<100;i++) {
  // Shown in java-like code which I need working in c!

  String prefix = "pre_";
  String suffix = "_suff";

  // This is the string I need formed:
  //  e.g. "pre_3_suff"
  String result = prefix + i + suffix;
}

I tried using various combinations of strcat and itoa with no luck.

Strings are hard work in C.

#include <stdio.h>

int main()
{
   int i;
   char buf[12];

   for (i = 0; i < 100; i++) {
      snprintf(buf, 12, "pre_%d_suff", i); // puts string into buffer
      printf("%s\n", buf); // outputs so you can see it
   }
}

The 12 is enough bytes to store the text "pre_" , the text "_suff" , a string of up to two characters ( "99" ) and the NULL terminator that goes on the end of C string buffers.

This will tell you how to use snprintf , but I suggest a good C book!

Use sprintf (or snprintf if like me you can't count) with format string "pre_%d_suff" .

For what it's worth, with itoa/strcat you could do:

char dst[12] = "pre_";
itoa(i, dst+4, 10);
strcat(dst, "_suff");

查看snprintf,或者,如果GNU扩展正常,则asprintf (将为您分配内存)。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM