присваивая int в строку в C - PullRequest
0 голосов
/ 24 августа 2011

Мне нужно вызвать функцию, которая получает строку.Мне нужно, чтобы строка содержала целые числа.Как мне назначить строку с целыми числами?

Спасибо, Эдо Коэн

Ответы [ 6 ]

3 голосов
/ 24 августа 2011

Вы ищете функцию snprintf():

http://libslack.org/manpages/snprintf.3.html

1 голос
/ 24 августа 2011

Используйте snprintf для создания нужной вам строки.

0 голосов
/ 24 августа 2011

Я думаю, это будет работать

#include <stdlib.h> // for itoa() call
#include <stdio.h>  // for printf() call

int main() {
    int num = 123;
    char buf[5];

    // convert 123 to string [buf]
    itoa(num, buf, 10);

    // print our string
    printf("%s\n", buf);

    return 0;
}

также вы можете использовать -

#include <stdio.h>

   int main(void)
   {
      const char base[] = "filename";
      char filename [ FILENAME_MAX ];
      int number = 42;
      sprintf(filename, "%s%d", base, number);
      printf("filename = \"%s\"\n", filename);
      return 0;
   }

Хотя помните, что sprintf () не рассчитывает переполнение буфера. sprintf () не очищает файловый буфер, фактически с ним не связано ни одного буфера. sprintf () работает с символьным буфером (не совсем то же самое). Если вы переполните этот буфер, вы можете завершить работу системы.

Более безопасной версией sprintf () является snprintf (), которая, к сожалению, пока не очень стандартна. Он появляется в различных формах от многих поставщиков компиляторов и, наконец, был стандартизирован в C99 и, будем надеяться, станет частью стандарта C ++ в следующем стандарте C ++. До этого вам просто нужно выкопать нестандартную версию, если она у вас есть.

0 голосов
/ 24 августа 2011

используйте itoa или sprintf, как указано в ссылке, из соображений переносимости.

snprintf или asprintf по соображениям безопасности ..

0 голосов
/ 24 августа 2011

попробуйте это:

int number = 10;
char mystring[20];
snprintf(mystring, sizeof(mystring), "%d", number);

в качестве альтернативы вы можете использовать itoa, но это считается небезопасным.

0 голосов
/ 24 августа 2011

Вы можете использовать sprintf для этого:

sprintf(buffer, "%d", 123);

Обратите внимание, что вам нужно убедиться, что в вашем буфере достаточно места

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...