ik heb het volgende:
void putstring(char *p);
char * pointer;
char array[] = "Hello world";
pointer = array;
tussenfuctie(*pointer);
void tussenfuctie(char * point)
{
putstring(pointer); //zet de string op het lcd display
}Alleen gaat er iets niet goed, omdat ik allemaal vreemde tekens op het scherm krijg. Wat doe ik fout en moet ik het (*) teken nog wel aan pointer toevoegen in de fucntie?
Boudie
Vervangen DOOR.
Je gebruikt in de functie pointer i.p.v. point.
Verder hangt het nogal van de implementatie van de functie putString af of het kan werken.
[Bericht gewijzigd door Boudie op (49%)]
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Geeft de compiler geen waarschuwingen? Compileer met de optie "-Wall" dan geeft de compiler, als ie het ziet, een waarschuwing als je iets doet wat mogelijk verkeerd is. Zoals hier.
Je geeft een "char" aan de functie tussenfunctie, terwijl die een "char *" als argument verwacht.
falaigai
Leren kan je alleen maar door te Doen
ik ben net zelf ook met zoiets bezig geweest
void SPI_send(char* txBuffer, int bytesToSend)
{
int ii;
/* Sending the data */
for (ii = 0; ii < bytesToSend; ii++)
{
/* Waiting for the usart to be ready */
while( !(spi->STATUS & (1 << 6)) );
/* Writing next byte to USART */
spi->TXDATA = *txBuffer;
txBuffer++;
}
char zero=0;
SPI_send(&zero,1);
Wat er volgens mij fout gaat is dat je een verkeerd argument meegeeft aan de funtie tussenfunctie:
void putstring(char *p);
char * pointer; <-- Pointer is een pointer naar een char zonder waarde
char array[] = "Hello world"; <-- In de array array staat de string "Hello world\0" en array is een pointer naar deze string
pointer = array; <-- pointer wijst nu net als array naar dezelfde string (Je hebt hier 2 pointers naar dezelfde string)
tussenfuctie(*pointer); <-- Je roept de tussenfuntie aan met de waarde die staat op het adres waar pointer naar verwijst. (in dit geval de char 'H'. De tussenfucntie zal de string die geprint moet worden zoeken op het adres 'H' (hex 0x48). Hier staat waarschijnlijk niets zinnigs en er wordt dus iets onleesbaars geprint. Aangezien je het adres van de de string mee wilt geven moet dit dus tussenfuctie(pointer); zijn.
void tussenfuctie(char * point)
{
putstring(pointer); <-- Je wilt hier waarschijnlijk point printen en niet de globale pointer.
}
Waarschijnlijk is de volgende code voldoende:
void putstring(char* p);
char array[] = "Hello world";
tussenfuctie(array);
void tussenfuctie(char* point)
{
putstring(point); //zet de string op het lcd display
}