Ich arbeite in C++, also begann ich, ein System zu machen, die einen Satz in einem 2D-Array von Zeichen öffnen. Nachdem ich versucht habe, Probleme damit zu lösen, habe ich es funktioniert, aber nicht so, wie es angenommen wurde.Ich habe Probleme mit Char Handhabung
#include <iostream>
#include <cstring>
using namespace std;
void backword(char* input, char* output[])
{
for(int i = 0, c = 0; strlen(input)>i; i++)
{
if(input[i] == ' ')
{
c++;
i++;
}
output[c] += input[i];
}
cout << output[1]; //debug
}
int main()
{
char** output = new char*[30];
backword("dfs sdfsdfsd dsffsdf", output);
cout << output[1]; //dubug
return 0;
}
Also was ist das Problem ?: Es etwas nicht zeigen, nach meiner debug es meine Array scheint nicht
geändert wirdWeitere Details: Dieser Code, den ich in Visual Studio versucht, nicht funktioniert, versucht in Code :: Blöcke, gleiches Ergebnis. Ursprünglich sollte ein Zeiger char ** zurückgegeben werden, aber ich begann mit dieser Methode, und ich habe keine Kompilierungsfehler.
P.S: Tut mir leid, wenn es ein dummer Fehler ist, aber ich habe vorher noch nie mit Zeichen gearbeitet.
Vielen Dank.
Sie nie Speicher für die in 'output' gehalten Zeiger zuweisen. –
Da dies C++ ist, sollten Sie keine rohen Zeichenzeiger verwenden, aber Sie sollten mit 'std :: string' arbeiten. Dein Weg ist eher der C-Weg. Und du vergisst zu erwähnen, was dein Programm tun soll. –
Ich schätze, Sie fehlen Dereferenz in Zeile 'cout << * Ausgabe [1]; // debug ', dann übergibst du temporäres Objekt an Funktion, ich denke, es ist nach Funktionsende zerstört und ich bin mir nicht sicher mit der Speicherzuweisung ... –