PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : array auslesen / ausgeben



mithras
22-08-2002, 14:15
ich leite die standardausgabe vom bildschirm mit einem pipe um. Nun will ich diese ausgabe in einen array speichern bzw. einlesen. Danach soll der Array wieder augegeben werden.
Habe schon etliche Versuche gemacht, aber entweder wurde nur eine zeile ausgegeben oder es gab Speicherzugriffsfehler!?

so, so wie unten beschrieben funktioniert alles perfekt. Das Prob ist aber nur, dass der array in den ich die daten speicher in der while schleife gleich wieder ausgegebn werden muss. wenn ich nun den array außerhalb der schleige positionier (das muss ich, da ich meinem programm den array mit dem gespeicherten daten an einen anderen prozess übergeben muss) dann wird nur eine zeile ausgeben!
int main(void)
{
char puffer[1000];
FILE *pipe_read;
pipe_read = popen("ls", "r");
while (fgets(puffer, 900, pipe_read) != NULL)
ausgeben(puffer);
return 0;
}
int ausgeben(char *puffer)
{
printf( "%s\n",puffer);
return 0;
}

tkortkamp
22-08-2002, 14:41
So geht's:


#include <stdio.h>

int ausgeben(char *puffer)
{
printf( "%s\n",puffer);
return 0;
}

int main(void)
{
char puffer[1000];
int read_bytes;
FILE *pipe_read;
pipe_read = popen("ls", "r");

read_bytes = fread(&puffer, sizeof(char), 999, pipe_read);
printf("Read %i bytes!\n", read_bytes);
//Immer mit \0 abschließen sonst Buffer Overflow!
puffer[read_bytes] = '\0';
ausgeben(puffer);

return 0;
}


Das mit der while()-Schleife ist IMO sehr ineffektiv.

c ya,
Tobias

nobody0
22-08-2002, 17:41
Aha, geht das eigentlich ähnlich mit dem Framebuffer, so dass man z. B. während eines 3D-Spiel einen Screenshot auslesen (u. verarbeiten kann) oder ist das sehr Hardware-Spezifisch?
:confused:

tkortkamp
22-08-2002, 17:50
Das hat damit überhaupt nichts zu tun ;)

Meinst du das jetzt für dein eigenes 3D-Spiel?
Dann guck mal hier: http://cone3d.gamedev.net/cgi-bin/index.pl?page=code/shotta

c ya,
Tobias

nobody0
22-08-2002, 17:56
Das Spiel kenne ich nicht und ich bräuchte das Auslesen um mal einen Spieleunabhängigen Aimbot zu programmieren; einfach den Cursor auf einen Bereich mit einer bestimmten Farbe auszurichten müsste doch einfach sein. :rolleyes: