November 05, 2002 str2d.c: Utility that Converts D source file to a D string | ||||
---|---|---|---|---|
| ||||
I found this mini-utility useful, and thought I would share it with the community. I would have written in D, but any time I referenced "stdin" (for feof or fgets) I was getting compile errors, so it was quicker to just port it to C than figure out what I did wrong. I think this would be a useful function to implement for the D standard library. If anybody has any bugfixes, send 'em. // the only purpose of this program is to read stdin, convert it // to a D string that represents it, and output that to stdout. // The output includes the quotes (single or double) around the // string, but does not include any variable to save it nor // any trailing semicolon. You need to add those. // // So you might use this program like this: // { // echo "module file;" // echo "char[] file_str = \c" // str2d <file.txt // echo ";" // } >file.d #include <stdio.h> int main() { putchar('\''); while(!feof(stdin)) { char str[1024]; int len; int s; fgets(str,sizeof(str),stdin); len = strlen(str); for(s=0; s<len; s++) switch(str[s]) { case '\'': printf("' \\' '"); break; case '\n': printf("' \\n\n'"); break; case 0: printf("ERROR ERROR ERROR\n"); return -1; default: putchar(str[s]); } } putchar('\''); return 0; } -- The Villagers are Online! http://villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ] |
November 05, 2002 Re: str2d.c: Utility that Converts D source file to a D string | ||||
---|---|---|---|---|
| ||||
Posted in reply to Russ Lewis | Russ Lewis wrote: > I found this mini-utility useful, and thought I would share it with the > community. I would have written in D, but any time I referenced "stdin" > (for feof or fgets) I was getting compile errors, so it was quicker to > just port it to C than figure out what I did wrong. stdin/out/err are implemented using proprietary macros, so I need to put in a version for GNU C. > I think this would be a useful function to implement for the D standard > library. Actually, fmt already has this using fmt ("%r", string). For example: println ("%r", "hello, world") -> 'hello, world' println ("%r", 'foo' \n 'bar') -> "foo\nbar" |
Copyright © 1999-2021 by the D Language Foundation