C 停止字符串数组
如何停止刺阵。如果我设置了可以放入的最大40个字符,但是我不想用40个字符填充整个字符串。下面是我在字符串数组中写入字符的代码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++) {
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;i1for(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;
}