Hallo
Ich möchte ein JPG Bild wie es der Titel schon sagt auslesen. Das Programm soll die komplette Datei auslesen und jedes Zeichen samt der Position als Int Wert in ein Array schreiben.
Jetzt zu meinem Problem. Habe zwar schon den Code Fertig aber je nach Bilddatei findet das Programm ein Zeichen vom wert -1 und Beendet das Programm
Ich Lese die datei mit der Funktion fgetc jedoch ist das ja eine Funktion um Dateien Zeichenweise zu lesen und ich brauche eine Funktion um Dateien Binär zu lesen
vlt kennt ihr eine Lösung
schonmal danke
Braucht nur eine Bild Datei "matrix.jpg" und noch eine datei wo irgendein text drinsteht dann zeigt das Programm alles an was es in der "matrix.jpg" gefunden hat
"Zeichen: [int wert des Zeichens] [Hexwert des Zeichens ] [Anzahl] [Position in der Bilddatei]
Bei dem Bild welches ich als Link angegeben habe stoppt das Programm bei Position 77 mit dem Oben angegebenen Fehler
Beispiel bild
http://vividlight.deviantart.com/art/Hello-It-s-Me-129666416
Ich möchte ein JPG Bild wie es der Titel schon sagt auslesen. Das Programm soll die komplette Datei auslesen und jedes Zeichen samt der Position als Int Wert in ein Array schreiben.
Jetzt zu meinem Problem. Habe zwar schon den Code Fertig aber je nach Bilddatei findet das Programm ein Zeichen vom wert -1 und Beendet das Programm
Ich Lese die datei mit der Funktion fgetc jedoch ist das ja eine Funktion um Dateien Zeichenweise zu lesen und ich brauche eine Funktion um Dateien Binär zu lesen
vlt kennt ihr eine Lösung
schonmal danke
Code:
#include <stdio.h>
#include <stdlib.h>
#define MATRIXSIZE 999
void hilfe();
int main()
{
FILE *DATEI, *MATRIX, *CRYPT;
char fname[255],mname[255]={"matrix.jpg"},cname[255];
char *ptr;
int matrixlog[1000][256]={0,},dateic,matrixc,pos;
int position=2,anzahl=1,i,y,ende;
while(1)
{
printf("\nWelche Datei wollen sie %cffnen: ",148);
scanf("%s",&fname);
// wurde ? eingegeben
if (strcmp(fname, "?" ) == 0 )
// Anzeigen der Hilfe
hilfe();
else
{
DATEI=fopen(fname,"r");
if (NULL == DATEI)
printf("\n *** Konnte datei \"%s\" nicht %cffnen ***\n",fname,148);
else
break;
}
}
MATRIX=fopen(mname,"r");
if (NULL == MATRIX)
printf("\n *** Konnte datei \"%s\" nicht %cffnen ***\n",mname,148);
strcpy(cname,fname);
ptr =strchr(cname,'.');
*ptr= '\0';
strcat(cname,"_crypt.txt");
CRYPT=fopen(cname,"w+b");
if ( NULL == CRYPT)
{
printf("\nKonnte datei \"%s\" nicht öffnen\n",cname);
return EXIT_FAILURE;
}
// ********** Anlegen des Hilfsarray`s **********
while (!feof (MATRIX) )
{
matrixc=fgetc(MATRIX); //auslesen des Zeichens in der Matrix
pos++; // Zählvar für Speicherposition des Zeichens
ende=0;
i=-1;
while (ende!=1)
{
i++;
if (i == MATRIXSIZE && matrixlog[0][i] != matrixc) //matrixlog[zeichen][vorkommen][position]
{
y=0;
while (matrixlog[0][y] != 0) // Position auf freies feld setzen
y++;
matrixlog[0][y]=matrixc; //matrixc in freien bereich schreiben
matrixlog[1][y]=anzahl;// anzahl der Variablen
while (matrixlog[position][y] != 0) // Position auf freies feld setzen
position++;
matrixlog[position][y]=pos; // position in freies feld schreiben
position=2;// Zurücksetzen auf standart feld für die Position des Zeichens
printf("\nZEICHEN: %d %x ANZAHL: %d ",matrixlog[0][y],matrixlog[0][y],matrixlog[1][y]);
printf(",%d,",pos);
//printf("zeichen: %d anzahl: %d position: %d\n",matrixlog[0][y],matrixlog[1][y],matrixlog[position][y]);
ende=1;
}
else if (matrixlog[0][i] == matrixc) //Wenn Zeichen in array vorhanden
{
matrixlog[1][i]+=1; // anzahl des Zeichens um 1 erhöhen
anzahl=1;
while (matrixlog[position][i] != 0) // Position auf freies feld setzen
position++; // Solange Hochzählen bis leeres feld gefunden
matrixlog[position][i]=pos; // position in freies feld schreiben
position=2;// Zurücksetzen auf standart feld für die Position des Zeichens
ende=1;
}
}// for schleife
}//while (!feof (MATRIX) )
getch();
// ********** Anlegen des Hilfsarray`s -ENDE- **********
}// MAIN END
// wird aufgerufen wenn "?" eingegeben wird
void hilfe()
{
printf("\n\n\t\t\t********** HILFE **********\n\n");
printf("Syntax: crypt [Dateipfad] [Matrixpfad]\n\t\n");
printf("Beispiel crypt C:\\kunden.dat C:\\matrix.jpeg\n\n\t");
printf("Parameter 1: Pfad der Datei die Verschlüsselt werden soll\n\t");
printf("Parameter 2: Pfad der Ver- Entsclüsselungsmatrix\n\n");
}
Braucht nur eine Bild Datei "matrix.jpg" und noch eine datei wo irgendein text drinsteht dann zeigt das Programm alles an was es in der "matrix.jpg" gefunden hat
"Zeichen: [int wert des Zeichens] [Hexwert des Zeichens ] [Anzahl] [Position in der Bilddatei]
Bei dem Bild welches ich als Link angegeben habe stoppt das Programm bei Position 77 mit dem Oben angegebenen Fehler
Beispiel bild
http://vividlight.deviantart.com/art/Hello-It-s-Me-129666416