Just nu i M3-nätverket
Gå till innehåll

Matris i C, tilldela?


Micke_Johansson

Rekommendera Poster

Micke_Johansson

Hej sitter och klurar på hur jag ska tilldela en char matris med en sträng värde.

 

Ser ut enligt nedan:

 

Har en char *Value[5];

 

Vill till dela denna variable ett par strängar, hur ska jag skriva detta?

 

Till exempel vill att Value[0] = "hej"

Value[1] = "Per"

Value[2] = "vill du leka"

 

etc...

 

Är denna deklaration en matris?

Trodde man skrev typ:

*Value[0] = "Hej" men får compileringsfel då. Hur ska jag kunna skicka in text?

 

Mvh

Micke

Länk till kommentar
Dela på andra webbplatser

Hej.

 

Nej, det är ingen matris, det är ett teckenfält, enklast är att initiera så här till exempel:

 

char namn[] = "Karin";

 

Då dimensionerar kompilatorn fältet och lägger in avslutaren (null) automatiskt.

Det är samma sak som:

 

char namn[6] = "Karin";

 

Minst ett extra tecken alltså.

Länk till kommentar
Dela på andra webbplatser

Micke_Johansson

Hej igen,

 

tackar för hjällpen fungerade bra att initiera genom

char temp[] = "något"

 

men en ny fråga om jag nu vill kopiera denna temp genom att ha sparat undan flera stycken strängar i olika fält,

menar:

 

temp[0] = "hej"

temp[1] = "da"

 

Hur kan jag kopiera in denna i en Char* t1[5] ?

 

genom memcpy måste jag i tredje paramter uppge längd, vilken längd ska jag använda eller hur får jag reda på den?

 

Mvh

Micke

Länk till kommentar
Dela på andra webbplatser

Hej

 

Om jag förstår rätt så vill du kunna slå ihop enstaka strängar till en stor sträng, eller?

I C:s standardbibliotek string.h finns bland annat en funktion som heter strcat som man kan använda då:

 

Här är ett litet demonstrationsprogram:

 

#include <stdio.h>
#include <string.h>

int main() {
char str1[100] = "Anders Andersson, ";
char str2[] = "Storgatan 13, ";
char str3[] = "123 45  Storstaden";
strcat (str1, str2);
strcat (str1, str3);
printf("Resultat: %s\n", str1);
return 0;
}

 

Och så här blir det:

 

C:\Users\Internet\Documents\C>Strcat

 

Resultat: Anders Andersson, Storgatan 13, 123 45 Storstaden

 

C:\Users\Internet\Documents\C>

 

Tyvärr tar strcat bara två argument så har man flera fält får med kedja som ovan.

En annan nackdel är ju att första strängen (str1 i pgr ovan) får nytt värde. Om man vill behålla det ursprungliga värdet får man göra på ett annat sätt, med strcpy som också finns i string.h

Länk till kommentar
Dela på andra webbplatser

  • 2 months later...
alsogringo

Hej sitter och klurar på hur jag ska tilldela en char matris med en sträng värde.

 

Ser ut enligt nedan:

 

Har en char *Value[5];

 

Vill till dela denna variable ett par strängar, hur ska jag skriva detta?

 

Till exempel vill att

 

Value[0] = "hej"

Value[1] = "Per"

Value[2] = "vill du leka"

 

etc...

 

Är denna deklaration en matris?

Trodde man skrev typ:

*Value[0] = "Hej" men får compileringsfel då. Hur ska jag kunna skicka in text?

 

Mvh

Micke

 

char* Value[5];

ovanstående är en array av char pekare så det är rätt att du kan skriva

 

Value[0] = "min str";
Value[1] = "ngt annat";
...

det är dock inte direkt en matris, i så fall måste du skriva

 

char Value[5][10]; // eller vad du nu för max strlk du vill ha.

 

när du tilldelar strängar till en matrix måste du kopiera in innehållet i matrisen

 

strcpy( Value[0], "min str" );
strcpy( Value[1], "ngt annat" );
puts( Value[0] ); // skriver ut 'min str'
puts( Value[1] ); // skriver ut 'ngt annat'

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...