Hallo,
ich hab vor mein System aufzuräumen bleibe aber bei printf hängen.
Das Steuerzeichen /n funktioniert nicht.
Bin mit meinem Latein am Ende.
Hier der Code:
Ich hoffe ihr könnt mir helfen.
MrTom3715
ich hab vor mein System aufzuräumen bleibe aber bei printf hängen.
Das Steuerzeichen /n funktioniert nicht.

Bin mit meinem Latein am Ende.
Hier der Code:
Code: [Auswählen]
void putc(char c)
{
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2] = c;
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2 + 1] = color;
cursor_x++;
printf_res++;
checkcursor();
}
void puts(const char* s)
{
while (*s)
{
putc(*s++);
}
}
void putn(unsigned long t, int s)
{
const char* symbol = "0123456789abcdefghijklmnopqrstuvwxyz";
char buffer[65];
char* r;
if (s > 36)
{
return;
}
r = buffer + 64;
*r = '\0';
do
{
*--r = symbol[t % s];
t /= s;
}
while (t);
puts(r);
}
int printf(const char* fmt, ...)
{
va_list ap;
const char* s;
unsigned long n;
va_start(ap, fmt);
printf_res = 0;
while (*fmt)
{
if (*fmt == '%')
{
fmt++;
switch (*fmt)
{
case 's':
s = va_arg(ap, char*);
puts(s);
break;
case 'p':
case 'x':
n = va_arg(ap, unsigned long int);
putn(n, 10);
break;
case 'd':
case 'u':
n = va_arg(ap, unsigned long int);
putn(n, 10);
break;
case '%':
putc('%');
break;
case '\0':
goto end;
default:
putc('%');
putc(*fmt);
break;
}
}
else if(*fmt == '\n')
{
cursor_y++;
cursor_x = 0;
checkcursor();
}
else if(*fmt == '\t')
{
if(cursor_x > SCREEN_WIDTH - TABULATOR_WIDTH)
{
cursor_x = 0;
cursor_y++;
checkcursor();
}
else
{
cursor_x = cursor_x + TABULATOR_WIDTH;
}
}
else if (*fmt == '\b')
{
cursor_x--;
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2] = ' ';
}
else if (*fmt == '\r')
{
cursor_x = 0;
}
else if (*fmt == '\v')
{
if(cursor_y > SCREEN_HEIGHT - TABULATOR_HEIGHT)
{
scrolldown(SCREEN_HEIGHT - cursor_y);
}
else
{
cursor_x = 0;
cursor_y = cursor_y + TABULATOR_HEIGHT;
}
}
else if (*fmt == '\f')
{
cls();
}
else if (*fmt == '\\')
{
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2] = 0x5C;
video[(cursor_y * SCREEN_WIDTH) + cursor_x * 2 + 1] = color;
cursor_x++;
}
else
{
putc(*fmt);
}
fmt++;
}
end:
va_end(ap);
return printf_res;
}Ich hoffe ihr könnt mir helfen.
MrTom3715

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
Ich habe mich nur gewundert, dass du dafür eine globale Variable benutzt. Bei mir gibt putn die Anzahl für die Zahl zurück, d.h. printf zählt selbst.
?)