نه دوست من شما کد رو اشتباه نوشتی !
الان میگم اشتباه شما کجاست
این کدی که شما نوشتی :
کد:
do
{
*(havij+i++)=USART_Read(USART1,0);
}while(*(havij+i)!=13 && i<10);
برسی کد:
در لحظه اول که i=0 هست مقدار خوانده شده در خانه صفر از آرایه هویج قرار میگیرد و بلافاطصله یکی به مقدار i اضافه میشود و در سطر بعد که دستور While هست خانه 1 {چون در خط قبل یکی به مقدار i اضافه شده است } که هم اکنون مقدار دهی نشده است با مقدار 13 مقایسه میشود پس در نهایت همیشه مقدار 0 با 13 مقایسه میشه، امیدوارم متوجه اشتباه کد شده باشید و اما راه حل :
راه اول:{توصیه نمی کنم}
کد:
do
{
*(havij+i++)=USART_Read(USART1,0);
}while(*(havij+i-1)!=13 && i<10);
راه دوم:{استاندارد هست}
کد:
do
{
*(havij+i)=USART_Read(USART1,0);
}while(*(havij+i++)!=13 && i<10);