See the following program I've tested with http://www.delorie.com/djgpp/compile/
Assuming you have a Zero-delimited, char-based ASCII text (i.e. you're using pure ascii, not a unicoded string) you can use the same algorithm:
/* 
  This program gets the spaced string "  spaced  " and prints an  unspaced string between angles.
 Note: this algorithm will modify original string.
*/
#include %26lt;stdio.h%26gt;
int main (void){
/*
 This is the original string. Will be overwrited with zeros at its end. 
*/
char *trimthis="  spaced  ";
/* 
This is the destination string: 
*/
char *tramthis;
int begin, lasttext, pointer;
/*1- Get first nonspacing char */
begin=0;
while (trimthis[begin]==32) { begin++; }
/*2- Get last nonspacing char */
pointer=begin;
lasttext=pointer;
while (trimthis[pointer]!=0) {
    if (trimthis[pointer]!=32) 
    { 
       lasttext=pointer; 
    }
    pointer++;
}
/* Get right before the last nonspacing char */
lasttext++;
/* A bit of caution before we overwrite*/
if (lasttext%26gt;pointer) lasttext=pointer;
/* Overwrite just right after the last nonspacing char */
trimthis[lasttext]=0;
(void *)tramthis=(void *)trimthis+begin;
/* Print "%26gt;unspaced%26lt;" from "  spaced  " */
printf("%26gt;un%s%26lt;",tramthis);
return 0;
}
Subscribe to:
Post Comments (Atom)
 
No comments:
Post a Comment