Kan man och i sådant fall hur gör man för att lägga ihop två char med varandra..
Går det om dom är olika stora?
Går det att byta vissa tecken.?
Med mera!
7 svar · 366 visningar · startad av roj
Kan man och i sådant fall hur gör man för att lägga ihop två char med varandra..
Går det om dom är olika stora?
Går det att byta vissa tecken.?
Med mera!
Vad är det du vill göra? En char är en s.k primitiv datatyp. Det betyder att om du skriver
char a = 'A' ;
char b = 1;
char c;
c = a+b;
... så blir c vid en formaterad utskrift "B", men den kommer att ha värdet 66 ('A' har värdet 65).
Om du däremot vill lägga ihop två tecken till ett "ord" blir det ett måste att allokera en array av storleken 2 och tilldela respektive char variabel på ett eget index.
Men om manvill arbeta med sträng hantering vad är det enklaste..? Om man nu inte kan använda CString, som jag är van vid.. Jag vill kunna lägga ihop strängar flyta strängar till en char osv.
Är det bara en begränsning i att du inte kan använda CString så finns ju string.h att använda. Annars kan du enkelt göra en egen funktion som gör detta.
Hastigt exempel:
void stringAppend(char *s1,char *s2, char *s3)
{
while(*(s1++))
*s3++=*s1;
while(*(s2 ++))
*s3++=*s2;
}
S1 kopieras till s3, s2 kopieras in efter s1 i s3. S3 är den nya strängen.
Men ivf måste du allokera utrymme för din nya sträng - statiskt eller dynamiskt.
Btw:
En sträng är inte en char!
Däremot består en sträng av flera chars och man kan tilldela en charpekare adressen till en sträng med chars. En sträng avslutas alltid med nulltecken.
Borde man inte kolla så att längden på s1+s2 är like eller mindre det allokerade utrymmet för s3 ?
Jovisst. Det var bara ett exempel som kräver att man allokerat storleken på s3 till s1+s2 's storlekar. Tanken var inte att ge en färdig lösning, utan peka på att det inte alltid är så svårt att knopa ihop sånt som standardlibben erbjuder. ;)
Om jag skriver så här..
char text[256];
text = 'MinText';
Nu vet jag ju att tex text[0] inehåller ett 'M'.. Men hur kollar jag det och låt säga att jag vill byta T mot ett N kan jag bara göra så här då?
text[3] = 'N';
Får inte till det riktigt..
I tidigare inlägg så talade Pew om att lägga in en check summa i min text jag skickade till porten och iom att jag skickar en char (eller flera chars) hur gör jag då för att flytta fram alla tecken några steg och lägga in min checksumma?
roj skrev:
I tidigare inlägg så talade Pew om att lägga in en check summa i min text jag skickade till porten och iom att jag skickar en char (eller flera chars) hur gör jag då för att flytta fram alla tecken några steg och lägga in min checksumma?
Typ så här:
unsigned char buffToSend[255],*pek;
unsigned char len;
pek = data_som_ska_skickas; //får inte vara längre än 254 byte
for(len=0;len<data_length;len++)
bufferToSend[len+1]=*(pek++);
bufferToSend[0]=len;
Vilket förutsätter att du vet hur många byten data som ska skickas. Är det strängar så terminerar dessa vid nulltecknet så då kan du ta reda på längden direkt:
unsigned char buffToSend[255],*pek;
unsigned char len;
pek = data_som_ska_skickas; //får inte vara längre än 254 byte
for(len=0;*pek;len++)
bufferToSend[len+1]=*(pek++);
bufferToSend[0]=len;
Fortfarande så ligger det ett ansvar hos dig att se till att datalängden inte överstiger den allokerade bufferten - 1.