Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* entab: Replaces strings of blanks by the corresponding number of tabs and
- spaces */
- #include <stdio.h>
- #define MAX_LENGTH 1000
- int get_line(char line[]);
- void print_line(char line[], int line_length, int tab_length);
- int
- main()
- {
- char line[MAX_LENGTH];
- int line_length;
- int tab_length;
- tab_length = 8;
- while ((line_length = get_line(line)) > 0)
- {
- printf("String with blanks:\n%s", line);
- print_line(line, line_length, tab_length);
- }
- return 0;
- }
- int
- get_line(char line[])
- {
- int i;
- char c;
- for (i = 0; i < MAX_LENGTH - 1 &&
- (c = getchar()) != EOF &&
- c != '\n'; i++)
- {
- line[i] = c;
- }
- if (c == '\n')
- {
- line[i] = c;
- i++;
- }
- line[i] = '\0';
- return i;
- }
- void
- print_line(char line[], int line_length, int tab_length)
- {
- int i;
- printf("String with tabs/blanks:\n");
- for (i = 0; i < line_length; i++)
- {
- if (line[i] == ' ')
- {
- int j, blank_count;
- for (j = i; line[j] == ' '; j++);
- if (j > i)
- {
- int k, tabs, spaces;
- blank_count = j - i;
- tabs = blank_count / tab_length;
- spaces = blank_count % tab_length;
- for (k = 0; k < tabs; k++, printf("\t"));
- for (k = 0; k < spaces; k++, printf(" "));
- i = j - 1;
- }
- else
- {
- printf("%c", line[i]);
- }
- }
- else
- {
- printf("%c", line[i]);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement