In my project I need to convert a string to a char array. From various examples I concluded thattoCharArray() 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 arehttps://www.arduino.cc/en/Reference/StringToCharArray andhttp://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:00CommentedJul 25, 2021 at 10:15
2 Answers2
If you're trying to use a method ofa 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 preferstrcpy,memcpy, etc tosnprintf.)
- 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:00CommentedMar 20, 2017 at 18:46
Explore related questions
See similar questions with these tags.
