Remove Tab

2001-03-27   © 2001-2003 Harry M. Hardjono ramstrong@earthlink.net

Choose Your Browser

Home Page
Work
Sample Code


Word Count
Word Count
Word Count
Remove Tab
Anagram
8 Queen
Permute
Nim
Quicksort


 
/* Tab remover
** Harry M. Hardjono
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define BUFSIZE  30000

main (int argc, char *argv[]) {
  int i,j;
  int tc,tabalign = 8,spacer;
  FILE *infile;
  char buffer[BUFSIZE];
  char *bptr;
 
  if (argc<2) {
    printf ("Usage: rmtab [-dn] file1 file2 ...\n");
    printf ("where n is tab alignment number (default 8)\n");
    goto PROGRAM_END;
  }
 
  for (i=1;i<argc;i++) {
    if (!strncmp("-d",argv[i],2)) {
      tabalign = atoi(&argv[i][2]);
      continue;
    }
 
    if ((infile=fopen(argv[i],"r")) == NULL) {
      fprintf (stderr, "unable to open file: %s\n", argv[i]);
      continue;
    }
 
    while (fgets(buffer, BUFSIZE, infile)) {
      for (tc=0,bptr=buffer;*bptr;tc%=tabalign,bptr++) {
        if (*bptr!='\t') {
          putchar(*bptr);
          tc++;
        } else {
          tc += spacer = tabalign-tc;
          for (j=spacer;j;j--)  putchar(' ');
        }
      }
    }
 
    fclose(infile);
  }
 
  PROGRAM_END:
  return (0);
}