2

In my project I need to convert a string to a char array. From various examples I concluded that toCharArray() will convert a string to a char array. But I failed to do so. The error is:

'a' does not name a type

The code I am using is:

String a = "45317";
char b[6];
a.toCharArray(b,6);

Resources are https://www.arduino.cc/en/Reference/StringToCharArray and http://forum.arduino.cc/index.php?topic=199362.0

1

2 Answers 2

4

If you're trying to use a method of a in the global scope, that's doomed to failure. You can only call methods within functions.

If all you want is a char array with "45317" in it then just use:

char *b = "45317";

If you want to convert a string that is built at runtime into a char array, then your current method is correct - you just have to do it in the right place.

0
5

There's a built in conversion which will return the underlying string-contents as a NULL terminated character array:

 String foo = "Steve was here"
 char *text = foo.c_str();

That is probably all you need, unless you do want to copy into a buffer. In that case you can use the standard C library to do that:

 // Declare a buffer
 char buf[100];

 // Copy this string into it
 String foo = "This is my string"
 snprintf( buf, sizeof(buf)-1, "%s", foo.c_str() );

 // Ensure we're terminated
 buf[sizeof(buf)] = '\0';

(You might prefer strcpy, memcpy, etc to snprintf.)

1
  • 1
    1) c_str() is no replacement for toCharArray(): your first example fails to compile with “error: invalid conversion from ‘const char*’ to ‘char*’”. Of course, if you only need a const char *, then c_str() is to be preferred. 2) In terms of code size, snprintf() is a very inefficient way of copying a string. 3) No need to subtract one from sizeof(buf) in the second argument to snprintf(). Commented Mar 20, 2017 at 18:46

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.