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
-
maybe this example may help you: stackoverflow.com/questions/68497443/…Pirx– Pirx2021年07月25日 10:15:38 +00:00Commented Jul 25, 2021 at 10:15
2 Answers 2
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.
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
.)
-
11)
c_str()
is no replacement fortoCharArray()
: your first example fails to compile with "error: invalid conversion from ‘const char*’ to ‘char*’". Of course, if you only need aconst char *
, thenc_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 fromsizeof(buf)
in the second argument tosnprintf()
.Edgar Bonet– Edgar Bonet2017年03月20日 18:46:08 +00:00Commented Mar 20, 2017 at 18:46