Zum Inhalt springen

VR6

Mitglieder
  • Gesamte Inhalte

    38
  • Benutzer seit

  • Letzter Besuch

  1. na wie bekomm ich denn den dezimalen wert des buchstaben heraus???
  2. na das cWerte war doch schon ein char Array oder nicht??? na jedenfalls hab ich das jetzt ein bissl anders gelöst ... ich hab einfach die dezimalen Code des ASCII Zeichens genommen und addiert. Das reicht erstmal. int ermittleHash(char string[255]) { hash = 0; int zahl = 0; //length_cwert = sizeof(cWerte) / sizeof(cWerte[0]); while(zahl < strlen(string)) { itoa(string[zahl], tmp, 10); hash += atoi(tmp); zahl++; } return hash; }
  3. Hm eigentlich hab ich schon den Code abgeändert... #include <stdlib.h> #include <ctype.h> #include <string.h> #include <stdio.h> #include "asuro.h" int volt, zaehler, HashWert, hash, i,length_cwert; // Char-Array / das gleiche wie Strings char text2[100]; char text[100]; char test[100]; char string[255]; char tmp[255]; char cWerte[39][1] = {"1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",";",":","#", "_"}; int iWerte[39] = { 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}; int ermittleHash(char string[255]) { hash = 0; int zahl = 0; length_cwert = sizeof(cWerte) / sizeof(cWerte[0]); while(zahl < strlen(string)) { for(i=0; i<length_cwert; i++) { if(string[zahl] == cWerte[i]) { hash += iWerte[i]; } } zahl++; } return hash; } int main(void) { Init(); while(1) { // alle 1000 Durchläufe ausführen if(zaehler % 30000 == 0) { // copy des Quellstring nach char Test strcpy(test, "id:asr_001:bat:"); // Batteriewerte werden ermittelt int a = Batterie(); int b = Batterie(); if (a == volt = a; // wandelt volt (int) in ein char-Array itoa(volt, text, 10); volt); // strcat hängt den parameter an den ersten strcat(test, text); strcat(test, ";"); // ErmittleHash HashWert = ermittleHash(test); itoa(HashWert, text2, 10); strcat(test, text2); strcat(test, "#"); SerPrint(test); } zaehler++; } } [/code]
  4. achja ... hatte ich mich nur verschrieben sry... jetzt bringt der compilier aber noch eine warnung: test.c:30: warning: comparison between pointer and integer was meint der damit???
  5. Danke für die schnelle Antwort. ok also das weglassen. aber komischerweise bleibt der hashwert beim Standardwert 0. Eigentlich müsste er es doch aufaddieren. Hier die geänderte Funktion: int ermittleHash(char string[255]) { hash = 0; int zahl = 0; length_cwert = sizeof(cWerte) / sizeof(cWerte[0]); while(zahl < strlen(string)) { for(i=0; i<length_cwert; i++) { if(string[zahl] == iWerte[i]) { hash += iWerte[i]; } } zahl++; } return hash; }
  6. Hallo liebe Community, ich habe ein Problem mit C. Und zwar möchte ich aus einem String einen ganz einfachen Hashwert ermitteln. Also eine Art Prüfsumme. Und zwar wird in einer Schleife der Index des zu codierenden Strings angesprochen, und diesen mit einem Array vergleicht. Ist dieser char vorhanden, dann nehme den Index und schaue an der Stelle im Zahlenarray und addiere den mit der Variable "hash". Und so geht das den ganzen String durch. Aber irgendwie addiert mein Programm "Hash" nicht auf. Ich glaube auch das itoa beim umwandeln nur zahlen bringt. Habt ihr ne Idee was ich falsch mache bzw. was ich besser machen könnte??? #include <stdlib.h> #include <ctype.h> #include <string.h> #include <stdio.h> #include "asuro.h" int volt, zaehler, HashWert, hash, i,length_cwert; // Char-Array / das gleiche wie Strings char text2[100]; char text[100]; char test[100]; char string[255]; char tmp[255]; char cWerte[38][1] = {"1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",";",":","#"}; int iWerte[38] = {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}; int ermittleHash(char string[255]) { hash = 10; int zahl = 0; length_cwert = sizeof(cWerte) / sizeof(cWerte[0]); while(zahl < strlen(string)) { for(i=0; i<length_cwert; i++) { itoa(string[zahl], tmp, 10); if(strcmp(tmp, cWerte[i]) == 0) { hash += iWerte[i]; } } zahl++; } return hash; } int main(void) { Init(); while(1) { // alle 1000 Durchläufe ausführen if(zaehler % 30000 == 0) { // copy des Quellstring nach char Test strcpy(test, "id:asr_001:bat:"); // Batteriewerte werden ermittelt int a = Batterie(); int b = Batterie(); if (a == volt = a; // wandelt volt (int) in ein char-Array itoa(volt, text, 10); // Alternativ auch ... // strcat hängt den parameter an den ersten strcat(test, text); strcat(test, ";"); // ErmittleHash HashWert = ermittleHash(test); itoa(HashWert, text2, 10); strcat(test, text2); strcat(test, "#"); SerPrint(test); } zaehler++; } } [/code] Danke & Gruß xXx
  7. Ah okay ... jetzt raff ich es -> Danke :uli
  8. Aha jetzt versteh ich das solangsam ... So wie ich das sehe wird i in den String davor gepackt und dieser in test, oder? Und für was steht das %i und %s?
  9. Ok danke so funzt es. Nochmal n kleines Verständnisproblem. In C gibts ja anscheindend Zeichenketten nur als char, also kein Datentyp String. Wenn ich dann dem Char-Array etwas zuweisen will, muss ich dann immer strcpy nehmen? Anscheindend bin ich C# verwöhnt, wo ich ich nem String einfach n Wert zuweisen kann.
  10. Also das heißt das ich dann das schreibe? zB: char text[255]; char test[255];
  11. Hallo "Fachinformatiker", ich bin ein relativ neuer C-Neuling. Ich hab n Roboter den ich programmiere. Mein Programm hat eine Batterie() Funktion, die ermittelt den Batteriestand. Desweiteren ein ID für jeden Robo. Jetzt möchte ich den Batteriestand (int) der ID (char) anhängen. Dieser Vorgang wird in ner While-Schleife wiederholt, aber nur alle 1000mal, aus Performancegründen. Also grob zusammengefasst: ich will eigentlich nur chars bzw. chars mit int verknüpfen. weiß hier vielleicht einer weiter ??? Zum Problem: Es kommende Fehlermeldungen: test.c:66: warning: assignment makes integer from pointer without a cast test.c:69: warning: passing arg 2 of `itoa' makes pointer from integer without a cast test.c:70: warning: passing arg 1 of `strcat' makes pointer from integer without a cast test.c:70: warning: passing arg 2 of `strcat' makes pointer from integer without a cast test.c:71: warning: passing arg 1 of `SerPrint' makes pointer from integer without a cast _________________________________ anscheindend wandelt itoa volt nicht in text um, warum? Hier der Code: #include <stdlib.h> #include <string.h> #include <stdio.h> #include "asuro.h" int volt, zaehler; char text; char test; int main(void) { Init(); while(1) { if(zaehler % 1000 == 0) { test = "id:001->Bat:"; volt = Batterie(); itoa(volt, text, 10); strcat(test, text); SerPrint(test); } zaehler++; } } Für Hilfe wäre ich dankbar. Gruß VR6
  12. Nein ich will lieber kein Linux, Windows ist mir da noch lieber ... evtl. später als 2. Betriebssystem oder über VM-Ware werde ich das dann nochmal probieren. Naja am Montag werde ich eure Varianten mal ausprobieren und mich wieder melden wenn ichs gepackt habe
  13. Erstmal danke für die Antwort und zweitens fürs verschieben, war mir da nicht sicher wohin mit dem thread. Zur 1. Variante: Naja das Problem ist ja das ich ja nicht in die Windowsfestplattenpartinionierung rein komme. Die CD startet ja normal doch danach ist Pumpe ... Naja und zu 2.: Ich hab auch schon unter Fedora probiert und es mit fdisk/mke2fs versucht aber da blick ich mal gar net durch. weißt du da mehr als ich. da soll man doch auch partionen löschen können. naja nach dem wochenende kann ich mir dann auch ne linux-cd beschaffen
  14. Hallo liebe Fachinformatiker und Co. Ich habe ein Prob mit meinem PC. Also. Vor einiger Zeit hab ich mal mit dem Gedanken gespielt ein Linux zu installieren und hab das auch mal gemacht. Ich bin Neuling in dem Gebiet und hab dann - mir war es auch egal - Fedora als primäres Betriebssystem installieren. Also es läuft darauf nix anderes als Fedora 7 (Monnshine). Da ich wohl doch nicht der begeisterte Linuxfan bin wollte ich Windows XP wieder installieren aber es funzt leider nicht. Hab es schon mit 2 XP-CD´s probiert und jetzt auch mal eine Notfall CD ausprobiert. Also noch genauer das Problem beschrieben: Ich lege die XP CD ein und starte ... danach "Drücken Sie eine Taste bla bla bla" ... ich drücke natürlich die Taste ... es erscheint dann die Meldung "Setup untersucht Hardwarekonfiguration ..." ... und dann kann man ewig warten. Es passiert danach einfach nichts weiter. Hab schon verschiedene Laufwerke probiert aber überall das gleiche. Wäre nett wenn mir jemand Tipps geben kann wie ich Fedora runter bekommen und Windows wieder drauff bekomm. Danke Grüße VR6
  15. Hm so dachte ich es mir auch, bin aber nun auf einen anderen Weg gekommen und mttlerweile schon fast fertig. Wäre jetzt zu umständlich euch das alles zu erklären, aber klappt... Trotzdem danke für eure Hilfe, im Prinzip könnte ihr den Thread wieder löschen, war ja eh für die Katz

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...