Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 停止字符串数组_C_Arrays_String_Avr_Uart - Fatal编程技术网

C 停止字符串数组

C 停止字符串数组,c,arrays,string,avr,uart,C,Arrays,String,Avr,Uart,如何停止刺阵。如果我设置了可以放入的最大40个字符,但是我不想用40个字符填充整个字符串。下面是我在字符串数组中写入字符的代码 int main(void) { char data[1][40]; int i1 = 0; int i2 = 0; serial_init(); while (1) { for (i1=0;i1<1;i1++) {

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

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;   
}
int main(无效)
{
字符数据[1][40];
int i1=0;
int i2=0;
串行_init();
而(1)
{
对于(i1=0;i1
for(i1=0;i1Use


如果接收的字符串不等于“.”,则会将字符添加到数组中。同时,将字符填充到数组中最多40个字符。

对不起,我不明白您的问题。首先要做的是阅读一本关于C.C字符串的书。C字符串以null结尾,因此简单的方法是在(data[i1][i2++]=Usart\u Receive()时进行内部循环输入完成后,编写获取字符的函数返回0。
i1>40
:这是错误的。为时已晚。
data[i1][i2+1]='\0';
:无意义的条件。不,
data[i1][i2+1]='\0'
是一个完全正确的条件,问题是它是作为赋值而不是条件;-)很好的捕获,答案是固定的。而且
数据[i1][i2+1]='\0';
不安全。这是什么?:
数据[i1][i2+1]=0;
,而您的“更安全”的方法是?也许示例而不是unclad批评会对所有相关人员更有教育意义。
i2
的范围是0-39。39的情况下,它超出了序列的范围。(例如
data[i1][i2+1]='\0';
->
data[i1][39+1(40)]='\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
              }
           } 
        } 
    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;
        }