D - Is this a printf bug?
- Matthew B. (23/23) Oct 16 2003 This is probably a newbie question, but I consistently get errors when u...
- Ant (10/14) Oct 16 2003 D string aren't null terminated they have the lenght
- Patrick Down (2/25) Oct 16 2003
- Walter (2/2) Oct 16 2003 I should have added this to the FAQ long ago; anyway, it's there now!
This is probably a newbie question, but I consistently get errors when using the %s identifier in a printf format string. I thought maybe my problem was that I have to convert the string to a C-type zero terminated string, but I note that char* toCharz(char[] string) is deprecated according to the compiler so I am uncertain. At any rate here is a simple code example that has problems. // import c.stdio.lib ; import string ; import ctype ; import stream ; int main(char[][] args) { char [] str = "blah blah " ; printf("A standard D string: %s\n", str) ; printf("Input argument passed: %s \n",args[1]) ; return(0) ; } I compile it using "dmd test.d" and then run "test blarg" in a dos window. The error I see becomes A standard D string: Error: Access Violation I may bore into the source code a bit to see what's going on. Regards, Matt B.
Oct 16 2003
In article <bmmp1i$14d0$1 digitaldaemon.com>, Matthew B. says...int main(char[][] args) { char [] str = "blah blah " ; printf("A standard D string: %s\n", str) ; printf("Input argument passed: %s \n",args[1]) ;D string aren't null terminated they have the lenght then the string. (this should be easy to find on the D pages) use printf("Input argument passed: %.*s \n",args[1]) ; instead. Ant PS (not to you, Matthew B., to the other guys) seems we also need a newby group :)
Oct 16 2003
http://www.prowiki.org/wiki4d/wiki.cgi?action=browse&id=FaqRoadmap&oldid=FAQ#ErrorAccessViolationonprintingastring In article <bmmp1i$14d0$1 digitaldaemon.com>, Matthew B. says...This is probably a newbie question, but I consistently get errors when using the %s identifier in a printf format string. I thought maybe my problem was that I have to convert the string to a C-type zero terminated string, but I note that char* toCharz(char[] string) is deprecated according to the compiler so I am uncertain. At any rate here is a simple code example that has problems. // import c.stdio.lib ; import string ; import ctype ; import stream ; int main(char[][] args) { char [] str = "blah blah " ; printf("A standard D string: %s\n", str) ; printf("Input argument passed: %s \n",args[1]) ; return(0) ; } I compile it using "dmd test.d" and then run "test blarg" in a dos window. The error I see becomes A standard D string: Error: Access Violation I may bore into the source code a bit to see what's going on. Regards, Matt B.
Oct 16 2003