
February 25th, 2003, 08:18 AM
|
|
Contributing User
|
|
Join Date: Feb 2003
Posts: 52
Time spent in forums: 38 m 41 sec
Reputation Power: 11
|
|
Let the war of escalation begin!  Here is a C program which can handle quoted fields in any position; change the definition of DELIM to set the output delimiter.
Code:
#include <sys/types.h>
#include <sys/uio.h>
#include <stdio.h>
#include <unistd.h>
#define DELIM ':'
#define BUFFER 1024
int main(void)
{
int i, insize, offset, quoted;
char in[BUFFER], out[BUFFER];
quoted = 0;
while ((insize = read(0, in, BUFFER)) > 0) {
offset = 0;
for (i = 0; i < insize; ++i) {
if (quoted) {
if (in[i] == '"') {
quoted = 0;
--offset;
continue;
}
}
else {
if (in[i] == '"') {
quoted = 1;
--offset;
continue;
}
if (in[i] == ' ')
in[i] = DELIM;
}
out[i - offset] = in[i];
}
write(1, out, insize - offset);
}
return 0;
}
|