[elektro] C -- illegal pointer hiba

elight at gmail.hu elight at gmail.hu
Wed Sep 25 19:50:10 CEST 2013


Bocsi,   elütöttem, de csak nektek..

tehát:
while ( *s++ != 0 );  //  áll a végén

Amig a while elől volt, jogosan az első chr is lemaradt,
mert a kiküldés előtt növete a pointert.
Ezért raktam a végére , hogy 0 val is lefusson,
és egy üres karaktert '\0' is  kiadjon..
A cooprocnak nem csak a string kell ,
hanem a lezáró nulla, sőőt cifrább kicsit,
mert minden stringet utána még nullákkal a
négybyte-os határra ki kell egészíteni ,
és onnan-tól  jöhet csak  az új utasítás.
Ezt tanálta ki az FTDI... Ezen szívok..
De már agyilag jobban sínen van ...

Üdv István.




2013-09-25 19:39 keltezéssel, SZIGETI Szabolcs írta:
> Hali!
>
> Ha csak az első pár karakter megy ki, akkor szerintem ott a hiba, hogy
> rosszul detektálod a string végét.
>
> Ez a te függvényed:
>
> void Funct_SendSTR(  const char *s )
> {
>      do
>      {
>           SPI1_Write(  s ) ;     // ezen soron "illegal pointer conversion"
>      }   while ( *s++ != 1 );
>
> }
>
>
> Ez addig fog menni, amíg a s pointer nem mutat egy 1 értékű bájtra, aminek
> valószínűleg nem sok értelme van. Ráadásul az üres stringen elhasal.
>
> Próbáld meg ezt:
>
> void Funct_SendSTR(  const char *s )
> {
>      while (*s!=0) /* ha igazán szép akarsz lenni,l akkor *s!='\0' -t írsz,
> mivel a '\0' a null karakter. */
>         {
>         SPI1_Write(*s);
>         s++;
>          }
> }
>
> A C ben string igazából nincs, az egy char-ra mutató pointer, ahol egy 0
> érték jelzi a string végét. Az üres string egy 0 bájtból áll. Az "abc"
> string a memóriában úgy néz ki, hogy 'a', 'b', 'c', 0. tehát 4 bájt.
>
> A fenti függvény azt csinálja, hogy amíg az s által mutatott bájt nem
> nulla, addig azt a bájtot kiküldi az SPI-n és egyel növeli a pointer
> értékét, tehát veszi a következő értéket. Az üres stringre is működik,
> mivel ekkor már az első iteráció sem fut le a while miatt és nem küld ki
> semmit.
>
> Már feltéve, hogy ezt kell a programodnak csinálni, nem tudom.
>
>
> Szabolcs
>
>
>
> 2013. szeptember 25. 19:26 elight at gmail.hu írta, <elight at gmail.hu>:
>
>> Gyári kódos mikroC-t használok régóta..
>> elég nagy gyakorlattal,
>> ebben  nagyonnagy részben meg is bízok.
>> ( Ez tehát kiesett, de azért Ők se tévedhetetlenek.
>>     néha bogarászni kellett ASM-ben is..  )
>>
>>
>> Általában ha bepipálok egy libraryt ,
>> az be is fordítja.. Csak a sajátokat kell def-ni..
>> Meg van egy buil_in.h , de azt alapból be szoktam.
>>
>> Ahogy azSPI1_Write
>> az strlen is megy *s -el...   sima s-el pedig nem.
>>      pedig pointeres a meghatározás..
>> Jleneleg ugy fordul és fut a progi, de hibásan.
>> Amire nem jöttem rá, hogy a string első pár
>> betűje megy ki csak a modulban, és időnként
>> a widget-em kiírása  behülyül..
>> És ez csak a TXT-t is tartalmazó ( pointeres )
>> vidgetek-nál fordul elő !..
>> Ha azokat kilövöm, a többi grafikai elem jó!
>>    Ez nyomozgatom..
>>
>> Köszi mindenkinek, kaptam jó ötleteket..
>> Holnap majd bogarászom, megpróbálgatom
>> sorra...
>>
>> Üdv István
>>
>>
>>
>>
>>



More information about the Elektro mailing list