2017-12-07 1 views
-2

Ich möchte char anhängen. Nach erfolgreichem Kompilieren zeigt es einen fehlerbehafteten Fehler.wcsncat_s show error assertion Zeichenfolge ist nicht null beendet

L "string beendet nicht null. Linie 124

#include <iostream> 
    #include <windows.h> 
    #include <string> 

int main(){ 
    wchar_t jszProcessName[4096]; 
    wcsncat_s(jszProcessName, L"iloveyou", 1000); 

    wcout << jszProcessName; 
return 0; 
} 
+1

Was ist Ihre Frage? – fkulikov

+0

Nicht nur ist hier keine Frage, aber es gibt keine Zeile 124. Der Compiler sagte Ihnen genau, was falsch war. Sie haben die Fehlermeldung jedoch ignoriert. War es wirklich einfacher hier zu fragen, als einfach den Compilerfehler zu lesen? –

Antwort

2

Sie nicht initialisierten Array wahrscheinlich nicht einen Wert von 0 hat das, was die wcsncat_s Funktion erwartet. Entweder zero initialize das Array zuerst :

wchar_t jszProcessName[4096] = {}; 

oder das erste Element an einen Nullabschlusszeichensatz:

jszProcessName[0] = L'\0'; 

, die einen ganzzahligen Wert von 0 entsprechen:

jszProcessName[0] = 0; 

Ohne sie Ihre wcsncat_s Funktion aufruft undefined behavior.

+0

Das Zeichen mit der breiten Zeichenanzahl ist 'L' \ 0''. –

2

Setzen Sie das erste Zeichen Ihres Zielarrays auf 0. wcsncat_shängt an eine Zeichenfolge an; das bedeutet, dass nach dem abschließenden Nullwert am Ende der Zeichenfolge gesucht wird und der neue Text an diesem Punkt kopiert wird. Wenn es keine abschließende Null gibt, geht dein Programm ins Lala-Land.

Verwandte Themen