我尝试将值复制到char中。
我的char数组是
char sms_phone_number[15];
顺便说一句,可以告诉我是否应该写(有什么好处/差异?)
char * sms_phone_number[15]
下面显示一个字符串:" + 417611142356"
splitedString[1]
我想把这个值赋给sms_from_number
// strcpy(sms_from_number,splitedString[1]); // OP's statement
strcpy(sms_phone_number,splitedString[1]); // edit
我有错误,我认为因为splitedString [1]是一个字符串,不是吗?
sim908_cooking:835:错误:来自' char'的无效转换到' char *'
那么我怎样才能正确地复制它。 我也试过sprintf但没有成功。
非常感谢你的帮助。 干杯答案 0 :(得分:0)
我声明像这样的spliedString
// SlitString
#define NBVALS 9
char *splitedString[NBVALS];
我有这个功能 splitString(" TOTO,+ 345,蒂蒂",slitedString)
void splitString(char *ligne, char **splitedString)
{
char *p = ligne;
int i = 0;
splitedString[i++] = p;
while (*p) {
if (*p==',') {
*p++ = '\0';
if (i<NBVALS){
splitedString[i++] = p;
}
}
else
{
p++;
}
}
while(i<NBVALS){
splitedString[i++] = p;
}
}
如果我使用splitedString显示执行for,则显示此
for(int i=0;i<4;i++){
Serialprint(i);Serial.print(":");Serial.println(splitedString[i]);
}
//0:toto
//1:+4176112233
//2:14/09/19
我也声明并想要复制..
char sms_who[15];
char sms_phone_number[15];
char sms_data[15];
//and I want to copy
strcpy(sms_who,splitedString[0]
strcpy(sms_phone_number,splitedString[1]
strcpy(sms_date,splitedString[2]
我知道,我对char和指针*非常困惑:o(
答案 1 :(得分:0)
宣言:
char * SplittedString[15];
声明一个指针数组到字符,a.k.a。C风格的字符串。
假设:
const char phone1[] = "(555) 853-1212";
const char phone2[] = "(818) 161-0000";
const char phone3[] = "+01242648883";
您可以将它们分配到SplittedString
数组:
SplittedString[0] = phone1;
SplittedString[1] = phone2;
SplittedString[2] = phone3;
为了帮助您,上述作业应该是:
SplittedString[0] = &phone1[0];
SplittedString[1] = &phone2[0];
SplittedString[2] = &phone3[0];
通过定义,SplittedStrings
数组包含指向单个字符的指针,因此最后一组赋值是正确的版本。
如果您被允许,请将std::string
更改为char *
,将std::vector
更改为数组。
你需要的是一个字符串向量:
std::vector<std::string> SplittedStrings(15);
修改1:
spliedString
分配空间。您的spliedString
应该是预先分配的数组:
char spliedString[256];
或动态分配的字符串:
char *spliedString = new char [256];
答案 2 :(得分:0)
字符串和字符对于菜鸟来说可能会造成混乱,特别是如果您使用了其他更灵活的语言。
char msg[40]; // creates an array 40 long that can contains characters
msg = 'a'; // this gives an error as 'a' is not 40 characters long
(void) strcpy(msg, "a"); // but is fine : "a"
(void) strcat(msg, "b"); // and this : "ab"
(void) sprintf(msg,"%s%c",msg, 'c'); // and this : "abc"
HTH