eigentlich klappt alles perfekt nur eine sache nervt, unzwar ist mein array nicht "1011" sondern "1011" keine ahnung wieso 5 zeichen statt 4 ausgegeben werden... das traurige ist sobald ich oben "char UHB[4]" ändere zu "char UHB[3]" oder "char UHB[5]" mache klappt das normal... aber will das nicht machen, da ich für ein unteres halbbyte halt genau 4 zeichen brauche + null terminierter 5 also UHB[4] sollte ja das optimale sein :S
Genau da ist dein Problem, nach deinem Char-Array befindet sich eben kein "null terminierter"
Entweder du vergrößterst das Array, um noch ein 0-Byte anhängen zu können, oder du änderst deine getUHB-Methode auf so etwas:
Erstmal danke an euch alle, also ich will das schon als char Array behalten.
Muss ich also den '\4' immer selber auf die letzte stelle des Arrays setzten? Ich dachte wenn ich z.B char uhb[4] mache ist automatisch auf der letzten stelle der null terminierer
Das ist ne Aufgabe von einem Blatt da soll das so genannt werden, keine Ahnung wie das sonst heißt
Erstmal danke an euch alle, also ich will das schon als char Array behalten.
Muss ich also den '\4' immer selber auf die letzte stelle des Arrays setzten? Ich dachte wenn ich z.B char uhb[4] mache ist automatisch auf der letzten stelle der null terminierer
Das ist ne Aufgabe von einem Blatt da soll das so genannt werden, keine Ahnung wie das sonst heißt
Entweder das oder du lässt die Zeichen einzeln ausgeben, also in etwa so (oder eben in einen string umwandeln):
PHP Code:
char* uhb=byte.getUHB(); for (int i=0;i<4;i++) std::cout<<uhb[i];
der Null-Terminator wird nur gesetzt, wenn du deinen Array mit einem "String" initialisierst:
char * uhb = "1111";
uhb hat nun die Länge 5 (1111 und \0)
Wenn du einen char array mit char uhb[4]; deklarierst, musst du dich selbst um die Terminierung kümmern, da diese Deklaration nur den Speicher reserviert ohne diesen zu verändern (e.g. \0 anhängen)
Ich würde ja meinen Code verwenden :P Der erzeugt dir einen char array, ist beliebig erweiterbar und funktioniert auch mit größeren Zahlen.
Binäre Operationen sind toll und schnell
der Null-Terminator wird nur gesetzt, wenn du deinen Array mit einem "String" initialisierst:
char * uhb = "1111";
uhb hat nun die Länge 5 (1111 und \0)
Wenn du einen char array mit char uhb[4]; deklarierst, musst du dich selbst um die Terminierung kümmern, da diese Deklaration nur den Speicher reserviert ohne diesen zu verändern (e.g. \0 anhängen)
Ich würde ja meinen Code verwenden :P Der erzeugt dir einen char array, ist beliebig erweiterbar und funktioniert auch mit größeren Zahlen.
Binäre Operationen sind toll und schnell
Wobei man bei 95% der Compiler heutzutage davon ausgehen kann, dass ein
"i/=2" in "i>>=1" automatisch optimiert wird.
Genau dasselbe ist es bei "i%=2". Aber unabhängig von der Optimierung hast du natürlich recht, binäre Operationen sind schneller.
der Null-Terminator wird nur gesetzt, wenn du deinen Array mit einem "String" initialisierst:
char * uhb = "1111";
uhb hat nun die Länge 5 (1111 und \0)
Wenn du einen char array mit char uhb[4]; deklarierst, musst du dich selbst um die Terminierung kümmern, da diese Deklaration nur den Speicher reserviert ohne diesen zu verändern (e.g. \0 anhängen)
Ich würde ja meinen Code verwenden :P Der erzeugt dir einen char array, ist beliebig erweiterbar und funktioniert auch mit größeren Zahlen.
Binäre Operationen sind toll und schnell
erstmal danke nochmal für die Hilfe an alle und finde dein code auch ganz ausser das du die stellen vertauscht hast .
eine frage hätte ich noch zu etwas anderem, möchte jetzt nicht ein neues thema dafür öffnen.
Unzwar versteh ich nicht genau, wann speicher reserviert werden muss und wann nicht.
z.b
wo genau ist der unterschied zwischen
Code:
int *a; und
int *a = new int;
wann muss speicher reserviert werden?
genau so auch bei arrays,
char a[5]; // Die Länge muss FEST gewählt werden. Statische Zuweisung.
char *b = new char[len]; //len kann irgendwoher kommen. Dynamische Zuweisung
Nummer 2:
Angenommen a und b werden in einer Funktion deklariert.
Code:
char a[5]; // a ist nur LOKAL verfügbar und wird nach Ende des lokalen Bereichs (return der Funktion) AUTOMATISCH gelöscht.
char *b = new char[5]; // ist GLOBAL verfügbar. Muss MANUELL mit delete []b; gelöscht werden. Ist auch nach dem return noch Verfügbar.
habe noch eine frage, habe einen operator überladen, welcher 2 UHB miteinander oder verknüpft, z.b hb1 "1001" und hb2 "0010", habe 2 methoden, eine klappt nicht, Ich weiß aber nicht wieso,
1. (klappt)
ok liegt wahrscheinlich an speicherreservierung oder so aber keine wie genau, und meine andere frage ist , bei der ersten methode muss ich den speicher in der main wieder freigeben oder? also wenn ich z.b habe
HB *hb3(hb2+hb);
wann muss speicher mit delete wieder freigegeben werden?
char array vom pointer mit srcpy changen 04/09/2015 - C/C++ - 10 Replies Hey zusammen,
also habe ein kleines problem das grad unnormal nervt:rtfm:
Habe in einem game ein pointer der auf ein char array zeigt
der pointer ist
DWORD* F = (DWORD*)0x0076BBD8; // hier der pointer
auf dem pointer ist jetzt ein char array drauf, nehmen wir einfach als beispiel
"hey"
Problem mit Array und for Schleife 11/25/2012 - C/C++ - 0 Replies Hallo, das folgende programm sollte eigentlich ein 11x11 feld aus zufälligen zahlen ausgeben, macht es allerdings nicht :confused:.
#include <iostream>
using namespace std;
int irand( int min, int max)
{
double r = max - min + 1;
return min + (int)(r * rand()/(RAND_MAX+1.0));
}
int main(){
[?]Array Problem (VB.NET 2012) 10/24/2012 - .NET Languages - 6 Replies Hallohallöchen,
Da ich gerade mega auf dem Schlauch stehe wollte ich mal fragen, ob mir einer von euch weiterhelfen kann.
Folgendes Problem:
Ich lese eine eine verschlüsselte .csv Datei ein, entschlüssel sie das folgender Syntax entsteht.
[Java] Problem mit Array 10/17/2011 - General Coding - 5 Replies Hallo lieber User !
Ich habe hier ein Programm das ein Array mit Zufallszaheln befüllt, und es dann mit einer anderen Methode durch Beistriche trennt. Mein Problem liegt in der Testklasse, da er mir da zwar die Ziffern durch Beistriche trennt, diese aber nicht mehr zufällig sondern alle gleich sind.
z.b eingabe : 5 ausgabe : 1,1,1,1,1,
public class ArrayMethoden {
public static int zufallsArray (int anzahl) {
int a = new int;
Array-Problem 05/13/2010 - AutoIt - 0 Replies Also ich habe die System-Zeit und das System-Datum in einen Array geladen:
#include <Date.au3>
Global $dat, $tim
$dat = _NowCalcDate()
If @error Then Return
$tim = _NowTime(5)