我有char data
变量给出(o / p来自pc'超级终端,我正在比较它的内部微控制器)我已知的字符串已知长度,如"ASDF"
。
现在我想将此变量' s o / p存储到char
数组char dataarray[5];
我有其他char数组char newdata[8]="ASDF\r\n";
,以便我可以使用if(strcmp(dataarray[i],name2) == 0)
比较两个字符串
类似
char data;
char dataarray[5];
char newdata[8]="ASDF\r\n";
if(strcmp(dataarray[i],newdata[j]) == 0)
那么我需要改变什么?
void main()
{
char *data;
char *old;
char *match;
char *nomatch;
nomatch = "not";
match = "yes";
old = "HJB";
int m;
USARTInit(25); //UBRR = 51
//Loop forever
while(1)
{
data=USARTReadChar();
if(strcmp(data,old) == 0)
{
for(m=0;m<3;m++)
{
USARTWriteChar(match[m]);
}
}
else{USARTWriteChar(nomatch);
}
}
答案 0 :(得分:1)
您可以使用数组索引来实现此目的。请检查以下伪代码
char data = 0;
char dataarray[5] = {0}; //initialize
for (int i = 0; i < 4 ; i++) //you can customize, but leave space for null
{
data = somefunc(); //somefunc() returns a char value
//something else, if you want. maybe some sanity on data itself
dataarray[i] = data;
}
dataarray[i] = 0; //null terminate the array
然后,您可以将dataarray
用于任何与字符串相关的操作,例如strcmp()
。
答案 1 :(得分:0)
您还需要更改大小五的let line = "Hello, world"
for (index, value) in line.characters.enumerate() {
// do something
}
大小,意味着排除dataarray
只能存储四个值。 null character
已经包含六个值,因此当您执行
newdata
那么它总会失败。您还需要更改数据阵列的大小,以便某些条件获得if(strcmp(dataarray[i],newdata[j]) == 0)
并且它将正常工作。
修改强>
根据编辑问题,我制作了这段代码以便理解。代码说明在注释中给出
true