Forum: C-Programmieren
Moderatoren: juergen, Martin ConradThema: [EDIT] - String aus asc.file einlesen an Funktion übergeben wieder einlesen
Re: String aus asc.file einlesen an Funktion übergeben wieder einlesen
Pateriol2005 am 23.01.2012 um 12:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char HEADER_TAG_LINECOUNT[] = "% No. of points:";
const char COMMENT_SYMBOL[] = "%";
const unsigned len = 255;
char *line;
char buffer[len];
double ang, rad;
char tempstring[len];
int header_tag_found = 0;
int no_points = 0;
FILE *f = fopen("ex10Polar_pol1114255.asc", "rt");
if (f==NULL) {
printf("Eingabedatei geht nicht.\n");
exit(1);
}
FILE *o = fopen("ex10Polar_new1114255.asc", "wt");
if (f==NULL) {
printf("Ausgabedatei geht nicht.\n");
exit(2);
}
// Zeilenweise aus f nach buffer lesen
while (line = fgets(buffer, len, f))
{
// Suche nach dem ersten Zeichen in buffer und schreibe es nach tempstring
sscanf(buffer, "%s", tempstring);
if (!strcmp(tempstring, COMMENT_SYMBOL))
{
// Zeile mit % gefunden -> schreibe die ganze Zeile in Outputdatei
fputs(buffer, o);
// Anzahl der zu verarbeitenden Datenzeilen eruieren, sofern noch nicht geschehen
// d.h. header_tag_found -> false ist
if (!header_tag_found)
{
// Lese 16 Zeichen nach tempstring und den folgenden Integer nach no_points
sscanf(buffer, "%16[^\n] %d", tempstring, &no_points);
// Vergleiche tempstring mit dem header tag um zu überprüfen ob die eingelesenen
// 16 Zeichen tatsächlich dem header tag entsprechen
if (strncmp(tempstring, HEADER_TAG_LINECOUNT, 16) == 0)
header_tag_found = 1;
}
}
// Paare können nur dann verarbeitet werden wenn bekannt ist,
// wieviele überhaupt verarbeitet werden sollen d.h. header_tag_found -> true
else if (header_tag_found && no_points > 0)
{
no_points--;
sscanf(buffer, "%lf %lf %*f %*f\n", &ang, &rad); // The "*" in %*f skips this input
double x = rad * cos(ang);
double y = rad * sin(ang);
// Outputzeile bilden und nach tempstring schreiben
sprintf(tempstring, "%20.15lf %20.15lf %20.15lf %20.15lf\n", ang, rad, x, y);
// Die neu gebildete Zeile wird nun nach o geschrieben
fputs(tempstring, o);
}
}
fclose(f);
fclose(o);
return 0;
}
Re: String aus asc.file einlesen an Funktion übergeben wieder einlesen
bcc-fan am 23.01.2012 um 13:03
--
C/C++
only just for fun
Re: String aus asc.file einlesen an Funktion übergeben wieder einlesen
Pateriol2005 am 23.01.2012 um 15:11
war mir dann doch zu kompliziert.
