StringCchCat Funktionsbeispiel

 C Programming >> C-Programmierung >  >> Tags >> GCC
StringCchCat Funktionsbeispiel

StringCchCat wird verwendet, um eine Zeichenfolge mit einer anderen Zeichenfolge zu verketten. Beachten Sie auch, dass die Strsafe-Funktionen wie StringCchCopy() und StringCchCat() nicht die gleiche Semantik wie die Funktionen strncpy_s() und strncat_s() haben. Wenn strncat_s() einen Fehler erkennt, setzt es den Ziel-String auf einen Null-String, während StringCchCat() das Ziel mit so vielen Daten wie möglich füllt und den String dann mit Null beendet.

Betrieb :Verkettet einen String mit einem anderen String.

Syntax :

HRESULT StringCchCat(_Inout_ LPTSTR  pszDest,
                     _In_    size_t  cchDest,
                     _In_    LPCTSTR pszSrc
                    );

Argumente :

  • pszDest :Zielpuffer, mit dem pszSrc verkettet wird.
  • cchDest :cch steht für count of characters. Dieses Argument wird hauptsächlich bereitgestellt, damit wir nicht nach dem Ende des Puffers schreiben.
  • pszSrc :Null-terminierte Zeichenfolge, die Sie verketten möchten.

Header-Datei :

#include <strsafe.h>

Rückgabewert :

Type: HRESULT 
S_OK    If successful

Wir werden auch die anderen Rückgabewerte sehen.

Beispielcode 1

Betrachten Sie das unten gezeigte Beispiel:

#include "stdafx.h"
#include "stdlib.h"
#include "winerror.h"
#include "windows.h"
#include "strsafe.h"

int _tmain(int argc, _TCHAR* argv[])
{
 TCHAR pszDest[100]= _T("Hello");
 TCHAR pszSrc[100] = _T("World");
 HRESULT hresult;

 hresult = StringCchCat(pszDest, _countof(pszDest), pszSrc);

 if (SUCCEEDED(hresult))
 {
  printf("String Succesfully concatenated:%ls\n", pszDest);
 }
 else
 {
  printf("Concatenation Failed:%d\n", GetLastError());
 }
 return 0;
}

O/P:

String Successfully concatenated:HelloWorld

Was passiert, wenn ich 0 als zweites Argument in der StringCchCat-Funktion übergebe.

Beispielcode 2

Betrachten Sie das unten gezeigte Beispiel:

#include "stdafx.h"
#include "stdlib.h"
#include "winerror.h"
#include "windows.h"
#include "strsafe.h"

int _tmain(int argc, _TCHAR* argv[])
{
 TCHAR pszDest[100]= _T("Hello");
 TCHAR pszSrc[100] = _T("World");
 HRESULT hresult;

 hresult = StringCchCat(pszDest, 0, pszSrc);

 if (SUCCEEDED(hresult))
 {
  printf("String Succesfully concatenated:%ls\n", pszDest);
 }
 else
 {
  if (hresult == STRSAFE_E_INVALID_PARAMETER)
   printf("Invalid Parameter Passed\n");
  else if(hresult == STRSAFE_E_INSUFFICIENT_BUFFER)
   printf("Destination Size not sufficient\n");
  else
   printf("Some unknown error happened\n");
 }
 return 0;
}

O/P:

Invalid Parameter Passed.

Wenn Sie also 0 als Zählwert übergeben, erhalten Sie den Fehler STRSAFE_E_INVALID_PARAMETER. Wir werden auch einige weitere Modifikationen vornehmen, um zu sehen, was passiert, wenn die Größe des Zielpuffers nicht ausreicht, um den gesamten Inhalt des Quellpuffers hinzuzufügen.

Beispielcode 3

Betrachten Sie das unten gezeigte Beispiel:

#include "stdafx.h"
#include "stdlib.h"
#include "winerror.h"
#include "windows.h"
#include "strsafe.h"

int _tmain(int argc, _TCHAR* argv[])
{
 TCHAR pszDest[8]= _T("Hello");
 TCHAR pszSrc[100] = _T("World");
 HRESULT hresult;

 hresult = StringCchCat(pszDest, _countof(pszDest), pszSrc);

 if (SUCCEEDED(hresult))
 {
  printf("String Succesfully concatenated:%ls\n", pszDest);
 }
 else
 {
  if (hresult == STRSAFE_E_INVALID_PARAMETER)
   printf("Invalid Parameter Passed\n");
  else if(hresult == STRSAFE_E_INSUFFICIENT_BUFFER)
   printf("Destination Size not sufficient\n");
  else
   printf("Some unknown error happened\n");
 }
 return 0;
}

O/P:

Destination Size not sufficient.

Wenn Sie anstelle von TCHAR eine Zeichenfolgenverkettung für char-Variablen durchführen möchten, müssen Sie die Funktionsargumente StringCchCatA (ANSI) verwenden. Wenn Sie eine Zeichenfolgenverkettung für WCHAR-Variablen durchführen möchten, müssen Sie die Funktion StringCchCatW(Unicode0) verwenden.