停止字符串数组

时间:2014-06-25 01:50:04

标签: c arrays string avr uart

如何停止sting数组。如果我设置了最多可以放入的40个字符,但我不想用40个字符填充整个字符串。这是我在字符串数组中写入char的代码。

int main(void)
 {

    char data[1][40];   
    int i1 = 0;
    int i2 = 0;
        serial_init();

        while (1)
    {

        for (i1=0;i1<1;i1++) 
            { 
               for (i2=0;i2<40;i2++) 
               { 
                  data[i1][i2] = Usart_Receive(); 
               } 
            } 

           for (i1=0;i1<1;i1++) 
           { 
               for (i2=0;i2<40;i2++) 
               { 
                  Usart_Transmit(data[i1][i2]); 
               } 
           }       

      }  
    return 0;   
}

示例如果我按if (Usart_Receive() == '.')。它起到阻止字符串填充直到40个字符的作用。怎么做,我希望有人可以帮助我。

2 个答案:

答案 0 :(得分:0)

    for (i1=0;i1<1;i1++) 
        { 
           for (i2=0;i2<40;i2++) 
           { 
              data[i1][i2] = Usart_Receive(); 
              if (data[i1][i2] == '.') {
                  if (i2 < 39) data[i1][i2+1] = '\0';  // null terminate string
                  break
              }
           } 
        } 

这将停止接收&#39;。&#39;,null终止字符串(如果需要),并退出循环。

答案 1 :(得分:0)

使用

    int main(void)
       {
        char data[1][40];   
        int i1 = 0;
        serial_init();
        while (1)
        {
        while (1)
        {
         data[0][i1] = '?'; //Add whatever You want 
         char received = Usart_Receive();
         if(received != '.'){
                    data[0][i1] = received;             
             }
            i1++;
            if(i1>40){
             break;
            }
         }
       i1 = 0;
       while (1)
         {
            Usart_Transmit(data[0][i2]);
            i1++;
            if(i1>40){
             break;
            }
         }
        }
        return 0;
        }

如果收到的字符不等于'。',则会为您的数组添加char。还可以将char最多填充40个char到您的数组。