RTV forum PL | NewsGroups PL

Problemy z działaniem kodu w CodeVisionAVR - co sprawdzić w pętli while?

CodeVisionAVR - co robię nie tak?

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Problemy z działaniem kodu w CodeVisionAVR - co sprawdzić w pętli while?

Pinarczuk
Guest

Thu Sep 23, 2004 3:50 pm   



Witam.

Czy może ktoś podpowiedzić mi co jest nie tak w moim krótkim kodzie w
CodeVisionAVR. Kod kompiluje się bezbłędnie, konfiguracja jest ok, dlaczego
jednak program nie działa. Czy ktoś może sprawdzić to u siebie na komputerze i
AVRe, bo wydaje mi się że tutaj źle kompiluje CodeVisionAVR.

....
char c;
char buffer[32];
char *s;
....
while (1)
{
//Odbiór stringa
s=buffer;
while(c=getchar()!=0 ){
*s=c;
s++;
}
*s=0;

//Wysłanie stringa
s=buffer;
while( *s != 0 ){
putchar(*s);
s++;
}
}
}


Z góry dzięki za odpowiedź bo męczę się chyba nad tym juz z tydzień.
Pozdrawiam.

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

czerstwy
Guest

Fri Sep 24, 2004 7:40 am   



Pinarczuk napisał(a):
Quote:
while(c=getchar()!=0 ){

powinno być:
while ( (c=getchar()) != 0 )
przy założeniu że chcesz zapisać pobrany znak do zmiennej c i porównać z
zerem, no i jesteś pewien, że ostatni znak będzie zerem

Pozdrawiam
czerstwy

Krzysztof Gawryś
Guest

Fri Sep 24, 2004 9:17 am   



Quote:
while (1)
{
//Odbiór stringa
s=buffer;
while(c=getchar()!=0 ){
*s=c;
s++;
}
*s=0;


while(1)
{
s=buffer;
while(c=getchar())
*s++ = c;
*s = 0;
....


Krzysiek

Jan Dubiec
Guest

Fri Sep 24, 2004 9:55 am   



Pinarczuk wrote on 23 Sep 2004 18:50:56 +0200:
[.....]
Quote:
AVRe, bo wydaje mi się że tutaj źle kompiluje CodeVisionAVR.
Kompilator to chyba kompiluje poprawnie, problem w tym że nie jest

zbyt dobry ponieważ nie wyrzuca ostrzeżenia na takie coś:
Quote:
while(c=getchar()!=0 ){
Występuje tutaj niejednoznaczność i kompilator generuje kod taki jak to

przewidzieli jego twórcy aczkolwiek nie taki jakiego Ty byś oczekiwał. Smile
Jak mniemam ten wiersz powinien wyglądać tak:
while ((c = getchar()) != 0) {
a ze względu na brak nawiasów kompilator prawdopodobnie potraktował go tak:
while (c = (getchar() != 0)) {
Przyzwoity kompilator natychmiast wyrzuci ostrzeżenie w takim miejscu.

Quote:
Z góry dzięki za odpowiedź bo męczę się chyba nad tym juz z tydzień.
Tydzień? Przez ten czas możnaby spokojnie przeczytać kilka pierwszych

rozdziałów jakiejś dobrej książki o C gdzie są opisane takie rzeczy. :-)

Regards,
/J.D.

Q
Guest

Fri Sep 24, 2004 1:54 pm   



Quote:
Tydzień? Przez ten czas możnaby spokojnie przeczytać kilka pierwszych
rozdziałów jakiejś dobrej książki o C gdzie są opisane takie rzeczy. Smile

dokladnie;
polecam koledze nauke _podstaw_ programowania w C;
/oczywiscie na 80486 'lub wyzsze' w np. bc
a nie na avr w cvavr...

Q
Guest

Fri Sep 24, 2004 1:57 pm   



Quote:
AVRe, bo wydaje mi się że tutaj źle kompiluje CodeVisionAVR.

poza tym:
cvavr ma code wizarda, sporo przykladow jest na sieci, ...

Jan Dubiec
Guest

Fri Sep 24, 2004 3:32 pm   



On Fri, 24 Sep 2004 16:54:29 +0200, "Q" <oink@gazeta.gov.pl> wrote:
[.....]
Quote:
polecam koledze nauke _podstaw_ programowania w C;
/oczywiscie na 80486 'lub wyzsze' w np. bc
a nie na avr w cvavr...
C to jest C. Poprawnie napisany kod w ANSI C [*] da się skompilować

praktycznie każdym współczesnym kompilatorem i będzie on działał
poprawnie. Oczywiście chodzi o kod nie wykorzystujący jakichś cech
lub bibliotek systemowych specyficznych dla danej architektury.
Generalnie należy nauczyć się odróżniać język C od kompilatora tego
języka oraz od bibliotek systemowych. Aha, no i warto również nauczyć
się odróżniać kompilator i linker od IDE. :-)

[*] Oczywiście są inne (tzn. nowsze) standardy C, ale ANSI C jest obecnie
"najmniejszym wspólnym mianownikiem"

Regards,
/J.D.
--
Jan Dubiec, jdx#slackware.pl, mobile: +48 506 790442

Głęboka wiara wymaga płytkiego rozumu i nikłej wiedzy.

J.F.
Guest

Fri Sep 24, 2004 3:48 pm   



On 23 Sep 2004 18:50:56 +0200, Pinarczuk wrote:
Quote:
while (1)
{
//Odbiór stringa
s=buffer;
while(c=getchar()!=0 ){
*s=c;
s++;
}
*s=0;

Pomijajac co koledzy slusznie wytkneli, to jeszcze:
a) czy na pewno chcesz zeby program wczytywal dane az
do znaku 00h ? Trudno taki wyslac z peceta.

b) przyzwoitosc nakazuje sprawdzac czy bufor sie nie przepelnia ..

J.

elektroda NewsGroups Forum Index - Elektronika Polska - Problemy z działaniem kodu w CodeVisionAVR - co sprawdzić w pętli while?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map