Wie die strncpy_s-Funktion von visual c++?

Ich Lerne einige neue Dinge in C++, und ich war versucht, dies zu testen strncpy_s-Funktion von Visual C++. Jedoch habe ich einige Probleme, da das Programm abstürzt und ich weiß nicht, was Los ist, aber ich bin sicher, es ist ein ziemlich blödes problem. Der source-code ist so etwas wie dieses:

#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cstring>

int main()
{
    char *p;
    p=(char *)malloc(sizeof(char)*strlen("Hello!\n"));
    strncpy_s(p,strlen("Hello!\n"),"Hello!\n",strlen("Hello!\n"));
    std::cout << p;
    std::cout << strlen("Hello!\n") << std::endl;
    return 0;
}

Als ich sagte, ich bin nicht mit std::string coz ich will versuchen, diese neue Funktion und wissen, wie es funktioniert.

  • Verwenden Sie einen debugger, um zu sehen, wo der crash passiert. Stackoverflow ist nicht ein debugger.
  • Das habe ich getan. Das problem war in strncpy_s Aufruf der Funktion.
  • Ich kopiere den text schrieb ich in der Frage Thema: "Wie ich schon sagte, ich bin nicht mit std::string coz ich will versuchen, diese neue Funktion und wissen, wie es funktioniert."
  • Yep. Aber was ist das problem mit std::cout << p;?
  • Auch in C++ gibt es keinen Grund für die Verwendung strncpy oder fast jede andere Funktion in der cstring header.
  • Als ich sagte, ich wollte versuchen, diese neue Funktion, ich freue mich auf das erlernen neuer Sachen.
  • p ist ein Zeiger, die Sie nicht wollen, um die Ausgabe der Zeiger, die Sie wollen, um die Ausgabe der Zeichenfolge, die Sie zeigt. Versuchen std::cout << &p;
  • Ich denke, du hast das rückwärts... dass ein Teil seines code ist in Ordnung, aber Ihr Ersatz druckt den Zeiger.

InformationsquelleAutor Victor | 2012-02-16
Schreibe einen Kommentar