如何在c中将值从char变量传递给char数组

时间:2015-06-09 13:32:45

标签: c arrays string char

我有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);
    }              
}

2 个答案:

答案 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