Hi,
GhostCoder: das wäre zwar richtig, wenn man nur die funktionsdeklaration anschaut, aber im aufruf sieht man, dass eine zeichenkette übergeben wird.
die funktionsdeklaration ist also falsch. es muss void print(char* eing) heissen
VideoMem sollte global sein, damit du nicht bei jeden aufruf von print() wieder oben links mit der ausgabe anfängst, sondern die position gespeichert wird.
char *VideoMem = (char*)0xB8000;
void print(char* eing) { // eing ist ein zeiger auf eine zeichenkette, deswegen char*
char *Text = eing;
while(*Text){
*VideoMem = *Text;
VideoMem++; // wir verändern den zeiger, nicht den wert in VideoMem[0] (das * muss weg)
*VideoMem = 7;
VideoMem++; // das * muss weg. siehe oben
Text++; // das * muss weg. siehe oben
line++; // <---- was bedeutet das?
}//end while
}//end outp
wenn dir das mit den *foo zu kompliziert wird schreib einfach foo[0], wenn du was in den speicher schreiben willst und foo wenn du den zeiger verändern willst.
merke: *VideoMem bedeutet das gleiche wie VideoMem[0]
edit: woher kommt diese komische funktion? die hab ich doch schon mal hier gesehen. mit ähnlichen (oder genau den gleichen?) fehlern. wie wärs mal mit einem Tutorial über Pointer in C in der nächsten Ausgabe oder in der Tutorialsammlung?