Daten in Datei Speichern

shamon

Grünschnabel
#1
Hallo!

Ich würde gerne die Daten, die ich in einer Funktion erzeuge in einer Text-Datei speichern und wieder ausgeben.

Hier ist die Funktion:

void ProcessImage(CyUserBuffer &userBuffer, CSpyder3GigEInterface *camera)
{
// Process image
unsigned char *tempBuffer = userBuffer.GetBuffer();
long max = -1, maxX, maxY;
long min = 0x7fffffff, minX, minY; //
unsigned long width=0;
unsigned long height=0;
unsigned long pixelWidth =0;
camera->GetSizeX(width);
camera->GetSizeY(height);
camera->GetPixelByteSize(pixelWidth);
for (int r = 0; r<(int)height; r++)
{
for (int c = 0; c< (int)width ; c++)
{
int value;
if ( pixelWidth == 1)
value = (int)(tempBuffer[ r*width+c]);
else
{
unsigned short indx =(r*width+c) * pixelWidth ;
value = tempBuffer[ indx+1 ]&0x0f;
value = value<<8;
value |= tempBuffer[indx];
}
if ( value > max )
{
max =value;
maxX = c;
maxY = r;
}
if ( value < min )
{
min = value;
minX = c;
minY = r;
}
if ( r%100 == 0)
printf("%d,", value);
}
if ( r%100 == 0)
printf("\n");
}
printf( "Maximum Value(%d, %d) = %d\n",maxX,maxY, max);
printf( "Minimum Value(%d, %d) = %d\n",minX,minY, min);
}

Wenn ihr mir helfen könntet, dann wäre das echt super.

Eine Frage wäre da noch. Was bewirkt die Zeile mit "value = value<<8;"?

Danke schon mal im Vorraus!
 

jokey2

Erfahrenes Mitglied
#2
Eine Frage wäre da noch. Was bewirkt die Zeile mit "value = value<<8;"?
Der Code ist also nicht von Dir...
Die Zeile heißt, das der Wert von value um 8 Bit nach links geschoben wird. Das hättest du aber auch selber rausfinden können, wenn Du mal nach dem <<-Operator geschaut hättest.

Was Deine Frage mit der Datei angeht, ußt du Dich etwas genauer ausdrücken. Was willst Du in eine Datei schreiben? Die Daten, die momentan mit printf ausgegeben werden oder was?
 

shamon

Grünschnabel
#3
Ja genau!
Also alle Werte, die mit printf ausgegeben werden.

Dazu zählen:

printf("%d,", value);

printf("\n");

printf( "Maximum Value(%d, %d) = %d\n",maxX,maxY, max);
printf( "Minimum Value(%d, %d) = %d\n",minX,minY, min);

Habe schon viel bei google gesucht, aber nix vernünftiges gefunden.
 

shamon

Grünschnabel
#5
Danke.

Naja, wie es aussieht kommt es auch immer drauf an, was man in google eingibt.

Wäre es aber auch möglich, wenn du mir eventuell ein Code beispiel geben könntest.
Wäre echt super!
 
Zuletzt bearbeitet:
#6
Am Anfang:

Code:
FILE *dat=NULL; //Kann natürlich auch anderer Varname sein
dat=fopen(" Dateiname.txt " ,"a"); //Statt Dateiname kannst natürlich auch was anderes schreiben
if(dat==NULL)printf("Fehler"); //oder sonst irgendwas, jedenfalls stop
Am Schluss
if(dat)fclose(dat);

Und alle printf durch fprintf(dat,...)ersetzen,
zb
printf("%d",bla);
wird zu
fprintf(dat,"%d",bla);

Falls ein Fehler beim öffnen der Datei auftritt und die die Funktion trotzdem durchmachen willst,
halt ohne Dateiausgabe, schreib vor die fprintf noch "if(dat)" dazu

Ich weiß, es gibt sinnvollere Lösungen, aber soviele printfs sinds doch gar nicht...

Gruß