2014-09-09 3 views
-1

Я хочу сделать что-то похожее на это в языке C:Форматирование строки в C

# This example is in Python language 

var1 = 10 
var2 = 45 
var3 = 76 

text = "Numbers are: %d, %d, %d." % (var1, var2, var3) 

Возможно ли это в C? Я хочу сказать решение для чистого C, а не C++. Спасибо.

EDIT:

Я не хочу, чтобы напечатать строку непосредственно, я хочу только для хранения отформатирован строки.

+0

чтения о 'array' в С. [в этом случае, только' int's] –

+1

переменные печати является такая основная функция, она просто * должна быть охвачена даже самыми сокращенными курсами. Это говорит о том, что вам следует подумать о том, чтобы начать снова в своей учебной книге с первой главы. – usr2564301

ответ

7

Использование snprintf()

int var1 = 10; 
int var2 = 45; 
int var3 = 76; 
char text[100]; 

snprintf(text, sizeof text, "Numbers are: %d, %d, %d.", var1, var2, var3); 
+2

В этом простом случае вы достаточно безопасны, но в целом вы должны проверить возврат 'snprintf()', чтобы убедиться, что все в порядке. 'int n; n = snprintf (текст, sizeof (текст), ...); if (n> = sizeof (text)) {/ * ohcrap * /} ' –

+0

С хорошо контролируемым' printf() '-ing, код может использовать буфер правого размера. 'const char format [] =" Числа:% d,% d,% d. "; char text [sizeof format + 3 * (sizeof (int) * CHAR_BITS/3 + 3)]; sprintf (текст, формат, var1, var2, var3); '. – chux

+0

@chux, 'snprintf()' может возвращать точное количество необходимых байтов. 'n = snprintf (NULL, 0," Числа:% d,% d,% d. ", var1, var2, var3); text = malloc (n + 1)/* Мне не нравятся VLA; но ваше использование в порядке * /; snprintf (текст, n + 1, «Числа:% d,% d,% d.», var1, var2, var3); ' – pmg

3

Ближайшие реализация будет:

#include <stdio.h> 

int main(void){ 
    char text[100]; 
    int var1 = 10; 
    int var2 = 45; 
    int var3 = 76; 
    sprintf(text, "Numbers are : %d, %d, %d", var1, var2, var3); 
} 
+0

Это будет лучший ответ, но вы сделали свои фигурные скобки неправильными ...: P – thohl

+0

Вы забыли 'return 0;' –

+0

@thohl Извините, но начинающий здесь :) – downhillFromHere

0

Да, это возможно в C

int main() 
{ 
int var1,var2,var3; 
var1 = 10; 
var2 = 45; 
var3 = 76; 
printf("Numbers are: %d %d %d", var1, var2, var3); 
return 0; 
} 

Записывает строку C, на который указывает формат на стандартный вывод (стандартный вывод). Если формат содержит спецификаторы формата (подпоследовательности, начинающиеся с%), дополнительные аргументы в следующем формате форматируются и вставляются в результирующую строку, заменяя их соответствующие спецификаторы. Для получения более подробной информации о Е() вы можете посетить по ссылке ниже: см: http://www.cplusplus.com/reference/cstdio/printf/ это же для C и

Смежные вопросы