försöker nu skriva in en mening eller ett ord. Tillsammans med ett nummer ex 3 så ska meningen/ordet konkateneras med sig själv 3 ggr. Om du vill konkatenera ordet tre gånger i en annan sträng kan du göra så här: Peter,Nu en fråga angående konkatenering
Ex hej tillsammans med int =3 blir hejhejhej.
Har försökt använda strcat och även append..
Men det verkar bara funka om man har två olika strängar. Hur får jag programmet att skriva ut mitt ord/mening så många gånger jag vill?
Tack.
JohannaSv: Nu en fråga angående konkatenering
char szText[] = "Hej";
char szBuf[256];
strncpy( szBuf, szText, sizeof(szBuf) );
strncat( (char*)(szBuf + strlen(szBuf)), szText, (size_t)(sizeof(szBuf) - strlen(szBuf)) );
strncat( (char*)(szBuf + strlen(szBuf)), szText, (size_t)(sizeof(szBuf) - strlen(szBuf)) );
cout << szBuf;
Det gäller bara att se till att varje ny insättning av ordet sker efter föregående text.
Eller om du bara vill skriva ut ordet valfritt antal gånger kan du göra så här:
for( int i = 0; i < 3; i++ )
{
cout << szText;
}
/Peter
Sv:Nu en fråga angående konkatenering
varför alla dessa konstiga kopieringar?
Det är iochförsig bra att kolla att man inte skriver över bufferten men det är väl bättre att kolla innan istället så man kan göra något åt det. I ditt fall resulterar det ju bara i en icke-terminerad sträng som för eller senare lär leda till en crash
if (strlen(szText)*3 >= sizeof(szBuf))
// ge något lämpligt felmeddelande
else {
strcpy(szBuf, szText);
strcat(szBuf, szText);
strcat(szBuf, szText);
}
Dessutom är väl det här ett C++ forum
std::string konkat(const std::string& str, int n) {
std::string ret;
for (ii = 0; ii < n; ++ii)
ret += str;
return ret;
}
int main() {
cout << konkat("ABC", 4) << std::endl;
}
>strncat( (char*)(szBuf + strlen(szBuf)), szText, (size_t)(sizeof(szBuf) - strlen(szBuf)) );
Hur kom du fram till denna rad? Resultatet blir iochförsig korrekt men sättet tyder på att det är mera tur än skicklighet.