Formatierung des Datei-Outputs

Chucky-GFX

Mitglied
Hallo, ich habe folgendes Problem , und zwar habe ich ein Programm geschrieben das eine Datei ausliest, diese anzeigt, die Anzahl sowie die Prozentzahl der vorhandenen Zeichen ausgibt.
Danach werden die Zeichen nochmal nach ASCII sotiert.

So nun zum tatsächlichen Problem, welches darin besteht, dass die Ausgabe in die Textfile total "wirsch" ist und nicht wirklich Ordentlich ist.
Deswegen die frage, wie kann man das sprintf so formatieren das es vernünftigt aussieht,
z.b. Komma unter Komma usw.

Code:
 #include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
 #include <string.h>
 
 int main()
 {
 	FILE *datei;
 	FILE *datei2;
 	unsigned char text[20000]; 
 	unsigned char output[1999999];
 	unsigned int test[10000];
 	char file[20];
 	char save[20];
 	float ixy,ixz;
 	int ix,iy;
 	
 	anfang:
 	printf("/******************************************************************\\\n");
 	printf("/* Welche Textdatei soll ausgelesen werden (z.B. test.txt) ?	  *\\\n/* ");
 	scanf("%s",&file);
 	datei = fopen(file,"r+");
 	if(datei == NULL)
 	{
 		printf("/******************************************************************\\\n");
 		printf("/* Fehler - Bitte vorhandene Datei angeben.					   *\\\n");
 		printf("/******************************************************************\\\n");
 		printf("/* ");
 		system("PAUSE");
 		goto anfang;
 	}	
 	else
 	{	
 	    printf("/*															    *\\\n");
 		printf("/* Speichern unter (z.B. write.txt)...						    *\\\n/* ");
 		scanf("%s",&save);
 		printf("/******************************************************************\\\n");
 		fseek (datei , 0 , SEEK_END);
 		int lSize = ftell(datei);
 		rewind (datei);
 		fread(text,1,lSize,datei);
 		fclose(datei);
 		printf(text);
 		datei2 = fopen(save,"w+");   
 		rewind (datei2); 
 		fwrite(text,1,lSize,datei2);
 		printf("\n\n");
 		for(ix=0;ix<strlen(text);ix++)
 		{
 			for(iy=0;iy<94;iy++)
 			{
 				if(text[ix]==32+iy) test[iy]++;
 			}
 		}
 		for(ix=0;ix<=94;ix++)
 		{
 		    sprintf(output,"/* %c - %i * Vorhanden - %i Prozent des Textes\n",ix+32, test[ix], (test[ix]*100)/strlen(text));
 			printf(output);
 			fwrite(output,1, sizeof(output),datei2);
 		}
 		printf("\n\n");		   
 		for(ix=0;ix<94;ix++)
 		{
 		   for(iy=0;iy<test[ix];iy++)
 		   {
 				  printf("%c", ix+32);	 
 		   }
 		}
 		printf("\n");
 		fclose(datei2);
 		system("PAUSE");
 	}
 }
 
Du kannst bei den Formatierungszeichen auch Werte fuer die Breite angeben. Also
Code:
printf("%6d, %6d, %10s\n",i,j,s);
Ergibt zwei Integer mit 6 charactern Platz und einen String mit 10 Charactern Platz.
Mehr Infos findest du hier:
Formatierungsanweisungen
 
Einer seits bedanke ich mich ;)
aber das problem is einfach das ich die datei als .txt file speichern will und das da halt alles krum und schief ist...aufn monitor ist es richtig doch in der txt file nicht...darum gehts mir konkret !


//edit : Problem gelöst, hab nach der zahlen hinzufügung ^^ (tolles deutsch) nochmal die array größe verändert, danach ging es.

so wo wir grad mal dabei sind würd ich gerne noch ne andere frage beantwortet haben :

Code:
  sprintf(output,"%1c   - %4i * Vorhanden - %2i Prozent des ganzen Textes\n",ix+32, wert[ix], (wert[ix]*100)/strlen(text));

und zwar...wie krieg ich es hin das prozentzeichen möglich sind ? weil wenn prozent zeichen angegeben werden gibt es sofot komische zahlenreihenfolgen


// edit : ebenfalls gelöst ...ich bedanke mich !
 
Zuletzt bearbeitet:
Es ist durchaus Sinnvoll, links die einem empfohlen werden anzuschauen. Dann haettest du dir eine Frage und mir eine Antwort ersparrt ;)
Code:
%%
 
Zurück