D - str2d.c: Utility that Converts D source file to a D string
- Russ Lewis (55/55) Nov 05 2002 I found this mini-utility useful, and thought I would share it with the
- Burton Radons (6/12) Nov 05 2002 stdin/out/err are implemented using proprietary macros, so I need to put...
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))) ]
Nov 05 2002
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"
Nov 05 2002








Burton Radons <loth users.sourceforge.net>