002
17.12.2008, 18:37 Uhr
~Gast111
Gast
|
Die x sind irgendwelche Wörter und somit sollen die Zahlen in der Zeile gefunden werden. Den Fall dass mehrere Zahlen vorkommen will ich mal weglassen.
Ich habe mal zwei Fälle. Der erste Fall funktioniert nicht und der zweite nimmt immer nur die zweite Zahl. Ich suche aber eine einfachere Lösung.
C++: |
int main(int argc, char *argv[]) { FILE *pfile; char string[150]; float n; int i; int a; int length;
a=0; n=0;
pfile= fopen(argv[1],"r");
if (pfile != NULL) { while (!feof(pfile)) {
/* buchstabe=fgetc(pfile);
if(isdigit(buchstabe)!=0) { if((n=atof(buchstabe))!=0) printf("Float: %f", n); if((i=atoi(buchstabe))!=0) printf("Int.: %d",i); }*/
fgets(string, 150, pfile); length=strlen(string); //+printf("%d\n",length);
for (a=0; a<length; a++) { if (isdigit(string[a]) != 0) { if ((n=atof(string))!=0) { printf("Float: %f\n", n); } else if ((i=atoi(string))!=0) { printf("Int.: %d\n",i); } } } } } else { printf("Datei '%s' konnte nicht geöffnet werden", argv[1]); exit(1); }
fclose(pfile); return 0;
}
|
C++: |
int main(int argc, char *argv[]) { FILE *file; char character [50]; char *string; double i; double aa; double bb; double cc; double dd;
i=0; aa=0; bb=0; cc=0; dd=0;
file=fopen(argv[1], "r");
if (file != NULL) { while (!feof(file)) { fgets(character, 50, file); if (character[0]== '#') { continue; } string=strtok(character," ");
while ( (string = strtok (NULL, " ")) != NULL) { i=atof(string);
if (strcmp(character, "aa")==0) { aa=aa+i; }
if (strcmp(character, "bb")==0) { bb=bb+i; }
if (strcmp(character, "cc")==0) { cc=cc+i; }
if (strcmp(character, "dd")==0) { dd=dd+i; }
}
}
printf("aa= %f\n",aa); printf("bb= %f\n",bb); printf("cc= %f\n",cc); printf("dd= %f\n\n",dd); printf("TOTAL: %f\n", aa+bb+cc+dd);
} else { printf("Cant open the file '%s'", argv[1]); }
fclose(file);
return 0; }
|
|