The field width and precision setting may be used for characters and strings as well. However, these have different meaning. See the following code:
char kh [] =”character String”;
printf(“%-30.10s\n”,kh);
The above code would print 10 characters of variable kh in width 30 with left justification. It will print the following:
character
Program illustrates the width and precision setting with numerical data as well as characters and strings:
Illustrates width and precision specification with character and string type data.
#include <stdio.h> void main() { char kh = 'X'; char ch []= "You should master C language"; clrscr(); printf("|%20c|\n", kh); //field width 20, right justification. printf("|%-20c|\n", kh); // field width 20, left justification. printf("|%10c|\n", kh);//field width 10, right justification printf("|%-40s %5c|\n", ch, kh); printf("|%-40s %-5c|\n", ch, kh); printf("|%40s|\n", ch); printf ("|%-40.l7s |\n", ch); printf("|%-40.10s|\n", ch); /*fieldwidth 40, precision 10, left justified*/ printf("|%-40.4s|\n", ch); //field width 40,precision 4, left justified printf("|%-.10s|\n", ch); //no field width, precision 10 left }
The output is given below.
Explanation of the output: Vertical bars are introduced so that the extent of width setting can be noticed. The first line of the output is the result of width setting 20 with right (default) justification. The second line of the output is result of the same width setting with left justification and the third line is the result of the width setting 10 with default justification. The fourth line of output is the result of width setting -40 for string ch and width setting 5 for kh with value X. So, after display of ch, X is displayed with right justification on the next 5 spaces. For the fifth line, the justification of kh is changed to left so it is displayed immediately after 40 spaces. Similarly, in sixth line of the output, the string ch is displayed in 40 spaces with right justification.
The next 4 lines of output are the result of different precision settings. The seventh line of the output is the result of”%-40.17s”. It displays 17 characters in width of 40 spaces with left justification. Similarly, in the next line the setting “%-40.10s”displays only 10 characters in width 40 and left justification due to –ve sign. For the last but one line of the output the precision setting is .4 so only 4 characters, i.e., “You” are displayed. If the setting is only”%-. 10 s \n”, the display consists of 10 characters, i.e., “You should” and it fills the entire space and there is no empty space because no width specification has been specified.
Program is another example of output of characters and strings values with formatting function.
Illustrates formatting with characters and strings.
#include<stdio.h> #include<stdlib.h> int main() { char ch = 'x'; char kh[] ="character string"; clrscr(); printf("%5c%5c\n",ch,ch); printf("%-5c%-5c\n",ch,ch); printf ("%s\n", kh); printf("%20.4s\n",kh); /*print 4 characters of kh on right.*/ printf("%-20.4s\n",kh); /*print 4 characters of kh on left.*/ printf("%30.10s\n",kh); /*The above code means print first10 characters of kh in width 30, with right justification.*/ printf("%-30.10s\n",kh); /*The above code means print 10 characters of kh in width 30 with left justification.*/ return 0; }
The expected output is given below
Explanation of the output: The first line of the output is the result of setting field width 5 and right justification. The second line of the output is due to same field width but with left justification. For this, -ve sign is put between % and conversion character c.
The third line is simply an output of the string with the default setting in the computer. For the fourth line of the output, the field width set is 20; however, due to the precision setting .4, it displays only 4 characters with right justification. The next line of the output is the same setting but with negative sign, i.e., left justification. The last but one and the last lines of output are with width setting of 30 and to print 10 characters with right and left justification, respectively.