c programmerings fråga, skicka en vektor till en funktion..
c programmerings fråga, skicka en vektor till en funktion..
har en fråga; om jag har en vektor som denna
struct char chars[] = {"B"};
och vill skicka tillbaka värdet chars[0] till funktionen writechar(uint16_t b)
hur gör jag då? uppenbarligen så kan jag inte bara skicka det med writechar(chars[0]);?????
struct char chars[] = {"B"};
och vill skicka tillbaka värdet chars[0] till funktionen writechar(uint16_t b)
hur gör jag då? uppenbarligen så kan jag inte bara skicka det med writechar(chars[0]);?????
struct har inget där att göra. Och byt ut citattecknena mot enkla sådana ('), eftersom B ska vara en char och ingen sträng. writechar() ska väl ta en uint8_t som argument? En char är ju 8 bitar.
Ex.
char chars[] = {'B', 'r', 'a'}; // En array av chars
writechar(chars[0]); // Anropa writechar() med den första char:en i chars som argument.
Ex.
char chars[] = {'B', 'r', 'a'}; // En array av chars
writechar(chars[0]); // Anropa writechar() med den första char:en i chars som argument.
en sträng deklareras som en array.. För det är ju det en sträng är, en array av tecken..
Alså funkar
ger dig en sträng , försöker du skriva ut den med tex printf(" Sträng %s",alongstring); så kommer den dock skriva ut till den stöter på en NULL i minnet.. vilket inte är helt lyckat...
Ska du göra det så sätt alongstring[19]=0;
Ska du bara ha den som en lookup table så behöver du inte fundera på det.. eftersom du vet hur lång den är!
Alså funkar
Kod: Markera allt
char alongstring[20] = {'A','B','C','D' osv till du har 20 st .'T'};
Ska du göra det så sätt alongstring[19]=0;
Ska du bara ha den som en lookup table så behöver du inte fundera på det.. eftersom du vet hur lång den är!
-
- Inlägg: 515
- Blev medlem: 31 maj 2003, 10:42:37
- Ort: Helsingborg
Om man inte har för behov att ändra i strängen (vilket du inte kan göra med ovan kod heller), så brukar iaf jag använda mig av #defines istället.
Även här får du automatisk NULL-terminering.
Mvh
speakman
Kod: Markera allt
#define OUTTEXT "Tjohejsan"
write(OUTTEXT);
Mvh
speakman
-
- Inlägg: 515
- Blev medlem: 31 maj 2003, 10:42:37
- Ort: Helsingborg
hmm.. får omformulera mig lite, på detta viset är det tänkt att det ska fungera
anropa funktionen writestring("text")
ta ut hur många bokstäver "text" innehåller,
antallet bokstäver sätts in i en for loop som i lopar funtionen writechar så många gånger som det finns bokstäver,
för varje gång loopen körs så skickas nästa bokstav i textstringen iväg till funktionen writechar,
i writechar gämförs boksavens ascii nummer mot en teckentabell gjord för lcdn.
har kommit så långt så jag kan använda funtionen writechar('B')
och få ut "B" på lcdn..
men jag vill som sagt kunna skriva writestring("HELLO") och få ut det på lcdn
anropa funktionen writestring("text")
ta ut hur många bokstäver "text" innehåller,
antallet bokstäver sätts in i en for loop som i lopar funtionen writechar så många gånger som det finns bokstäver,
för varje gång loopen körs så skickas nästa bokstav i textstringen iväg till funktionen writechar,
i writechar gämförs boksavens ascii nummer mot en teckentabell gjord för lcdn.
har kommit så långt så jag kan använda funtionen writechar('B')
och få ut "B" på lcdn..
men jag vill som sagt kunna skriva writestring("HELLO") och få ut det på lcdn
Kod: Markera allt
void writestring(uint8* indata)
{
while(*indata)
{
writechar(*indata);
indata++;
}
}
