5Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
249
249
EMPFEHLEN
-
04.09.11 19:08 #1
- Registriert seit
- Jun 2011
- Beiträge
- 76
Hallo,
ich hab ein Problem.
Aufgabenstellung etc. steht im Code als Comment.
Nur wenn ich bei "count_lines" schon bis zum Ende der Datei gehe.
Darum wird die while bei search_hash nicht berücksichtig, richtig?
Kann man das net irgenwie resetten?
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
/*Aufgabe: Schreiben Sie zwei Unterprogramme: a) Ein Unterprogramm um die Zeilen in einem File zu zählen und ans Hautptprogramm zurueck zugeben. b) Ein Unterprogramm um die Zeilen im File durchzusuchen und alle Zeilen die mit einem # beginnen in ein neues File. zu schreiben. */ #include <stdio.h> #define MAX_LEN 100 int count_lines(FILE* text, FILE* erg); void search_hash(FILE* text, FILE* erg); int count_lines(FILE* text, FILE* erg) { int anz=0; char a[MAX_LEN]; while(!feof(text)) { fgets(a,MAX_LEN,text); anz++; } return(anz); } void search_hash(FILE* text, FILE* erg) { char b[MAX_LEN]; while(!feof(text)) { fgets(b,MAX_LEN,text); if(b[0] == '#') { fprintf(erg,"%s",b); } } } int main() { FILE*text=NULL; FILE*erg=NULL; int anz=0; text=fopen("text.txt","r"); if(text == NULL) { printf("fehler beim lesen(text.txt)"); exit(-1); } anz=count_lines(text,erg); erg=fopen("erg.txt","w"); if(erg == NULL) { printf("fehler beim schreiben(erg.txt)"); exit(-1); } search_hash(text,erg); fclose(text); fclose(erg); return(0); }
MfG Googlehupf
-
Hi
Warum heißt die eine Funktion search_hash? Wo ist da der hash?
Was macht count_lines mit Zeilen, die länger als 100 sind?
search_hash genauso.
Bei der "Fehler bei schreiben"-Meldung sollte die Lesedatei im if wieder geclosed werden.
Zum resetten:
Code cpp:1
fseek(text, 0, SEEK_SET);
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
04.09.11 19:42 #3
- Registriert seit
- Jun 2011
- Beiträge
- 76
-
Also bei "Hash" denk ich eher an sowas: 0x1e4b3hha
# ist eine Raute.
Egal...Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
04.09.11 19:59 #5
- Registriert seit
- Jun 2011
- Beiträge
- 76
Ok dann sorry falsche Übersetzung von mir
.
und bei fscanf wäre das dann fflush(stdin)?
-
Was wäre fflush(stdin)?
Das fseek von oben setzt die Stelle, an der gelesen wird, wieder an den Dateianfang.
fflush macht was ganz anderes: Bei irgendeinem Schreibvorgang, bei dem die Daten vom Betriebssystem zwischengespeichert werden, den Buffer leeren und wirklich rausschreiben.
Beispiel: Schreiben einer Datei.
Wenn es nur wenig Byte sind werden die von Windows zwischengespeichert, statt sofort auf die Festplatte geschrieben.
Beim fclose wird dann erst wirklich geschrieben. Mit fflush kann man das schon vorher erzwingen, ohne die Datei zu schließen.
Bei irgendeinem Eingabezeug (wie fscanf, scanf etc) hat fflush übrigens gar nichts zu suchen
NUR bei Ausgabe (Bildschirm, Datei etc). Alles, was rausgeht..
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
04.09.11 21:57 #7
Zwar off-topic, aber bei Wikipedia wirds es auch erwähnt: http://de.wikipedia.org/wiki/Hash.
Auch wenn man bei Google sucht tauchen einige Forenbeiträge auf.
Der erste Gedanke war bei mir aber auch MD5-Hash oder sowas.mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
05.09.11 14:09 #8
- Registriert seit
- Jun 2011
- Beiträge
- 76
Ok, ich danke euch.
Dadurch das ich noch Fragen habe... stelle ich sie hier gleich.
Mein Problem ist, dass ich in der letzten Zeile kein '\n' befinden, kann ich auch nicht die Summe von den Zahlen, Buchstaben mit einer # ausgeben.
Da gibt es einen Trick mit dem Return Value von fscanf oder?
Wenn kein Feld eingelesen werden kann das is der Rückgabewert 0 und sonst 1 oder?
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
/*Aufgabe: Schreiben Sie zwei Unterprogramme: a) Ein Unterprogramm um zeilenweise eine Kontrollzahl zu errechnen und diese Zahl am Ende der Zeile einzufügen. Die Kontrollzahl ist die Summe aller ASCII-Codes in der Zeile ohne die Leerzeichen. Die Zahl soll am Ende der Zeile mit einem # getrennt ausgegeben werden. Hinweis! Verwenden Sie zum einlesen %c b) Ein Unterprogramm um alle Werte im File auf mm umzurechnen und am Bildschirm auszugeben. */ #include <stdio.h> #define MAX_LEN 100 void convert(FILE* text, FILE* erg); void count_kontrollzahl(FILE* text, FILE* erg); void convert(FILE* text, FILE* erg) { char b[MAX_LEN]; int a=0; int erg1=0; while(!feof(text)) { fscanf(text,"%d%s\n",&a,b); if((b[0] == 'm') && (b[1] == 'm')) { erg1=a*1; printf("%dmm\n",erg1); } if((b[0] == 'm') && (b[1] == '\0')) { erg1=a*1000; printf("%dmm\n",erg1); } if((b[0] == 'd') && (b[1] == 'm')) { erg1=a*100; printf("%dmm\n",erg1); } if((b[0] == 'c') && (b[1] == 'm')) { erg1=a*10; printf("%dmm\n",erg1); } } rewind(text); } void count_kontrollzahl(FILE* text, FILE* erg) { char a='x'; int x=0; int sum=0; while(!feof(text)) { fscanf(text,"%c",&a); if(a == '\n') { a='#'; fprintf(erg,"%c%d\n",a,sum); } else { fprintf(erg,"%c",a); } sum+=a; } } int main() { FILE*text=NULL; FILE*erg=NULL; text=fopen("text.txt","r"); if(text == NULL) { printf("fehler beim lesen(text.txt)"); exit(-1); } convert(text,erg); erg=fopen("erg.txt","w"); if(text == NULL) { printf("fehler beim schreiben(erg.txt)"); exit(-1); } count_kontrollzahl(text,erg); fclose(text); fclose(erg); }
LG Googlehupf
-
Wie schaut denn das File diesmal aus?
Und warum muss man %c verwenden? Sowas blödes...Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
05.09.11 20:15 #10
- Registriert seit
- Jun 2011
- Beiträge
- 76
-
Ja.
Bei einem %c wird im OK-Fall 1 zurückgegeben, sonst nicht 1.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
Ähnliche Themen
-
Elektronik durch Computer kontrollieren: Digital Input/Output
Von Marco7757 im Forum HardwareAntworten: 6Letzter Beitrag: 09.07.11, 09:38 -
File Input/Output
Von Googlehupf im Forum C/C++Antworten: 10Letzter Beitrag: 05.06.11, 12:34 -
Übungen für File Input Output
Von C_Boy im Forum C/C++Antworten: 11Letzter Beitrag: 17.05.11, 15:12 -
Java & Parallelport - input/output leitungen abfragen
Von paddz im Forum JavaAntworten: 2Letzter Beitrag: 26.07.06, 09:16 -
input/output probleme
Von Darko im Forum C/C++Antworten: 2Letzter Beitrag: 25.04.04, 11:01





Zitieren


.
Login






