On Mon, 24 Jan 2005, Faheem Mitha wrote:

I'm trying to write an R wrapper for a C++ library, using .Call. I've never used .Call before. I'm currently having some difficulties converting a R character string to a C one.

Here is a little test program.

#include <R.h>
#include <Rinternals.h>
#include <stdio.h>

SEXP testfn(SEXP chstr)
{
 char * charptr = CHAR(chstr);

CHAR(STRING_ELT(chstr, 0));

First you select the first element of the character vector, then select its contents as a C-level character array.

 printf("%s", charptr);
}

This compiles without problems, but when I try to run this as

.Call("testfn", "foo")

I get a segmentation fault.

I am sure I am making an obvious mistake, but can someone help me to sort it out? Thanks in advance. Please cc me, I'm not subscribed.

Please read `Writing R Extensions' for more examples.

--
Brian D. Ripley,                  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to