2015-03-26 2 views
1

Например, у меня есть строка, и я хочу написать функцию, которая будет печатать часть ее на экране с напечатанной длиной, не инициализируется, но определяется последним по функции или входные данныеИспользование printf для printf для печати части строки

обычно

char str[70]="my name is Jack"; 
printf("%.4s", str[11]) 

результат будет «Джек»

Однако в настоящее время длина должны быть записаны на стандартный вывод в настоящее время в настоящее время определено

char str[70]="my name is Jack"; 
int x; 
scanf("%d",&x); 

теперь длина будет определить позже, так как использовать его с Printf я теперь только с помощью этого метода

char str[70]="my name is Jack"; 
int x, i; 
scanf("%d",&x); 
for(i=0, i<x, i++){ 
    printf("%c", str[11+i]); 

это будет работать, но я хочу знать, есть ли способ PRINTF без использования цикла , Я попробовал

printf("%.xc", str[11+i]); 

но результат неверный, так что это не так.

+1

'зсапЕ ("% d", х);..' Должно быть 'зсапЕ ("% d", &x);' –

+1

'Е ("% 4s ", str [11])' должно быть 'printf ("% .4s ", str + 11)' – pmg

ответ

3

Использование * в спецификатором преобразования Printf

char data[] = "The name is Jack Monroe"; 
int length = 4; 
int start = 12; 
printf("%.*s", length, data + start); // Jack 
+0

Привет, можете ли вы дать мне ссылку на * спецификатор преобразования, я использую google, но результат меня не удовлетворяет – aukxn

+0

http://pubs.opengroup.org/onlinepubs/9699919799/functions/fprintf.html «Дополнительная точность, которая дает ... максимальное количество байтов для печати из строки в спецификаторе преобразования s». – pmg

+0

Также http: //port70.net/~nsz/c/c11/n1570.html#7.21.6.1 для того же t вн – pmg