string i C

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Inlägg av JonasJ »

Char* och char[] är inte samma sak. Se tex här: http://gcc.gnu.org/ml/gcc-bugs/2001-04/msg00587.html

Ena fallet får du storleken på en pekaren, i andra fallet storleken på arrayen.

Viktigt att hålla reda på när man programmerar t.ex. mikroprocessorer så att dina strängar som du vill kunna ändra på inte hamnar i flashminnet.

Edit: Stavfel och fixade länken (var en punkt på slutet).

Här förklaras det bättre:
http://www.codeguru.com/forum/showthread.php?t=351721

Läs posten från SuperKoko (roligt namn, han är nog inte svensk :))
SvenW
Inlägg: 1155
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg av SvenW »

Ibland tänker man att det är språket C som är SuperKoko :wink:
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Inlägg av JonasJ »

Hehe, jag tycker att C är ett ganska skönt språk men man kan bli lite yr i huvudet av alla pekare hit och dit, speciellt när man använder dubbel eller trippelpekare. Jag skulle inte vilja göra några större säkerhetskritiska system med C.

Denna sida är rätt trevlig att skumma igenom
http://www.faqs.org/faqs/C-faq/

Finns mycket matnyttig där.

Edit: Stavar som en gorda :)
bos
Inlägg: 2306
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: string i C

Inlägg av bos »

baltazar skrev:Såhär skriver jag idag:
printf(lcd_putc,"Hello world");
Vad innehåller lcd_putc? Det låter som en funktion. printf() ska inte ha funktioner som argument.
Användarvisningsbild
baltazar
Inlägg: 106
Blev medlem: 19 oktober 2003, 21:50:18

Inlägg av baltazar »

lcd_putc är en funktion som ligger i en .h-fil som man använder för att kommunicera med LCD display. Den tar emot en char i taget. Men jag funderar på att göra mitt program på ett annat sätt så att jag slipper att använda string.
bos
Inlägg: 2306
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Inlägg av bos »

OK. Du använder iallafall printf() helt fel eftersom funktionen enbart hanterar strängar, inte funktioner som argument. Gör istället en egen print-funktion till ändamålet, typ såhär:

Kod: Markera allt

void my_lcd_print(char *str) {
  while (*str) lcd_putc(*str++);
}
Anropa med my_lcd_print("Hello world");.
Skriv svar