zahlen stat zeichen
-
erstmal danke,
ich bin noch ein dau,
1.erste frage wie weise ich atoi eine feste zahl zu(nicht mehr also 9),
2 ich das beispiel versucht erstmal so einzu bauen aber er will dann das "strlen" nicht mehrhätte ihr ein bespiel für feste zahlen?
-
das mit den strlen war ein fehler im windows unter linux macht er es.
ich habs jetzt mal mit der anleitung versucht aber sucht nicht in der datei der wert ist immer der gleiche,auch bei unterschiedlich datein
#include <stdio.h> #include <stdlib.h> int main() { FILE *q, *z;; q = fopen("test", "r"); z = fopen("test2.c", "w"); if(q == NULL || z == NULL) { printf("Fehler beim Auslesen\n"); return 1; } int i; char szInput [4096], *p; printf ("Enter a number: "); gets ( szInput ) ; i = atoi (szInput); int zeilen=0, zeichen=0; while( !feof( q ) ) { fgets( szInput, sizeof(szInput), q ); //Zeilen einzeln lesen + länge if ( feof( q ) ) // bei End of File (eof) abbrechen (break) break; zeichen+=strlen(szInput); //Zeichen Addieren bis zu Ende der Zeile zeilen++; // Zeilen hochrechnen } fprintf(z,"Zeilen=%d", szInput); //ausgeben (Ergebnis in Varialbe "zeilen") fclose(q); fclose(z); }
die ausgabe ist immer Zeilen=-1073749680
-
szInput ist ja auch kein Integer-Wert
Was genau willst du denn erreichen?
-
also wie schon beischrieben
es sollen aus einen text die tel.nr zählt werden
das am ende ich ein einer ander datei" xxxx rufte %d mal an"
die nr wollte ich fest vorgeben.
edit on
das problem ist ja das ich es mit zahlen nicht hin bekommen
edit off
-
Wenn ich mir deinen Quelltext so ansehe, dürfte am Ende in "zeichen" die Gesamtgröße der eingegebenen Datei stehen, in "zeilen" die Zeilen der Datei und in szInput die letzte Zeile, soweit richtig?
Was steht denn in deiner Datei drin? Und welche Zahl genau willst du am Ende ausgeben?
-
CStoll schrieb:
Wenn ich mir deinen Quelltext so ansehe, dürfte am Ende in "zeichen" die Gesamtgröße der eingegebenen Datei stehen, in "zeilen" die Zeilen der Datei und in szInput die letzte Zeile, soweit richtig?
Was steht denn in deiner Datei drin? Und welche Zahl genau willst du am Ende ausgeben?
fast,raus kommen tut ja immer das gleiche.egal welche datei
die ausgabe ist immer Zeilen=-1073749680im text stehen nr.
09900/55555
09999/44444
00000/55555
(bespiel nr.,text wäre viel länger)ich will jetzt wissen wie oft zb die nr 55555,44444 usw.
wenn ich es dann in die datei schreibe kann ich ja denn namen davor setzten.
-
in C++ könntest du z.B. eine map<string,int> verwenden, um die einzelnen Telefonnummern durchzuzählen, in C ist das etwas komplizierter.
Und zu deiner Ausgabe: szInput ist ein Pointer, wenn der mit %d ausgegeben wird, erhältst du irgendwelchen Müll bzw. die Integer-Darstellung deiner Adresse. Du benötigst %s, um den in szInput gespeicherten Text auszugeben, oder eine int-Variable, in der du die richtige Nummer stehen hast.
*startet einen Versuch - ohne Garantie*
typedef struct { int anzahl; char nummer[20]; }entry; //... entry vals[100]; int last=-1; char input[20]; while(!feof(q)) { fgets(input,20,q); for(int i=0;i<=last;++i) if(strcmp(input,vals[i].nummer)==0) break; if(i>last) { last++; strcpy(vals[last].nummer,input); } vals[i].anzahl++; } for(int i=0;i<=last;++i) printf("Nummer %s wurde %dmal angerufen\n",vals[i].nummer,vals[i].anzahl);
-
erstmal danke für deine hilfe
erwill das for nicht
error: `for' loop initial declaration used outside C99 mode .c:44: error: `for' loop initial declaration used outside C99 mode
c++ fand ich bis jetzt immer schwerer,
deshalb wollte ich es in c machen.
-
fprintf(z,"Zeilen=%d", szInput); //ausgeben (Ergebnis in Varialbe "zeilen")
Dann lies Dir die Zeile doch nochmal durch... Du schreibst im Kommentar 'Ergebnis in Variable "zeilen"', gibst aber was (!) als Zahl aus? Nicht die Variable "zeilen". Ich hoffe Du kommst jetzt von selbst drauf
-
schawee schrieb:
erwill das for nicht
error: `for' loop initial declaration used outside C99 mode .c:44: error: `for' loop initial declaration used outside C99 mode
Ups, kleine Verwechslung C/C++ meinerseits - in C müßtest du die Variable i vor der Schleife deklarieren.
Ansonsten C++ ist um einiges leichter, weil dir die STL-Klassen viel Arbeit abnehmen können
-
CStoll schrieb:
schawee schrieb:
erwill das for nicht
error: `for' loop initial declaration used outside C99 mode .c:44: error: `for' loop initial declaration used outside C99 mode
Ups, kleine Verwechslung C/C++ meinerseits - in C müßtest du die Variable i vor der Schleife deklarieren.
Ansonsten C++ ist um einiges leichter, weil dir die STL-Klassen viel Arbeit abnehmen können
habs mittlerweil in c++ probier mit nicht mehr erfolg,aber die hoffung stribt nie und dümmer wird man auch nicht dabei.
hier der link für c++ http://www.c-plusplus.net/forum/viewtopic-var-p-is-916846.html#916846 kannst ja mal darei schauen@LordJaxom,wenn nicht variabl würd ich mal auf contant tipen und auch testen