-
12.08.11 08:48 #16
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.Erstmal ist es kein Fehler, sondern nur eine Warnung. Die kann man einfach ignorieren; vor allem da strcpy_s keine Standard C/C++ Funktion ist. Dazu einfach in den Projekteinstellungen folgende Präprozessorvariablen definieren:
Das dient übrigens dazu Speicherzugriffsfehler zu vermeiden, da die Funktion die mit dem 2. Parameter auch die Größe des Zielstrings kennt. Trotzdem ist der Nutzen der Funktion zweifelhaft, da man als 2 Parameter schließlich irgendwas übergeben kann, und somit eben immer noch selbst dafür verantwortlich die richtige Größe zu überprüfen/ermitteln.Code :1 2 3 4
_SCL_SECURE_NO_WARNINGS _SCL_SECURE_NO_DEPRECATE _CRT_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
hallo, ich war jetzte leider zwei wochen weg und hab etwas den faden verloren ich hab jetzte versucht auf diese weise die zeichen zu ersetzen...
leider funktioniert das nicht...muss ich dann nochmal jetzt nohmal die chars auslesen 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
// Programm 2.cpp: Hauptprojektdatei. #include <stdafx.h> #include <fstream> #include <iostream> #include <string> using namespace std; int main() { ifstream datei; string line; string inhalt; int pos; datei.open("e:\\win2dos.crt"); if(!datei) { cout << "Datei wurde nicht gefunden" << endl; getchar (); return -1; } while(getline(datei, line)) { char* zeichen = new char[line.size() + 1]; strcpy_s(zeichen, line.size() + 1, line.c_str()); // Kompiler empfiehlt strcpy_s zu verwenden zeichen = new char[line.size() + 1]; int pos = zeichen.find("#"); zeichen.replace(pos,"/0"); delete[] zeichen; // zeichen wieder freigeben cout << line << endl; } datei.close(); getchar(); return 0; }
-
Hi
hättest du nicht vor drei Wochen schon abgeben sollen?
Naja...was solls...
Schau dir einmal den ersten Link und die drittte Zeile meiner Signatur an.
Zum Code: Alles außer dem Inhalt der while-Schleife schaut korrekt aus.
Das Innere der Schleife ist aber ein Desaster.
1) Was genau soll das ersetzen? Da seh ich nicht, dass irgendwas ersetzt wird.
2) Darf das nicht kompilieren. Ein char-Pointer hat keine Klassenmethoden.
3) Reservierst du zweimal Speicher, wobei du nur einmal wieder freigibst.
4) Wozu überhaupt zeichen reservieren, wenn du schon line hast?
5) Suchst du ein # in einem String, der keinen Inhalt hat.
Gute Quelle für unerklärliche Fehler und Abstürze.
6) hab ich schon vor langer, langer Zeit geschrieben, dass /0 nicht \0 ist.
Da gibts auch noch einige andere Sachen, die schon gesagt wurden.
Wenn du "den Faden verloren" hast lies dir das Thema von Anfang an nocheinmal durch. Hab ich vor diesem Beitrag auch gemacht.
Und irgendwie hatte ich den Eindruck, dass du vom Verständis her schon mal weiter warst als jetzt...Geändert von sheel (03.09.11 um 06:49 Uhr) Grund: hat->hab
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, ...?
-
also bis zur while schleife versteh ich auch noch was das programm tut soweit ich mich erinner kann wandeln die nächsten drei befehle den string line(also den string in dem der Text der Datei gespeichert wurde) in ein char Array um und ich dachte das das char array in diesem falle "zeichen" ist und dann wollte ich mithilfe der variable pos das zeichen "#" aus dem array finden und erstzen, so hab ich mir das vorgestellt.....sollt ich jetzte nach den drei befehlen nochmal ne schleife einbauen oder....und mit thread
war noch der befehl sscan wie ich den einstzen soll......
.....verzeih bitte wenn ich zu krass damit nerve....
-
Es wäre einfach einmal schön, wenn du dich an die hier gültigen Regeln hälst.
Wenn man das Forum dauerhaft nützen will sollte man sich daran halten.
Ich komm hier übrigens jeden Tag mit Anfängern in Kontakt;
würde ich das machen wenn mich das Anfänger-sein nervt?
Was nervt: Wenn man umsonst schreibt, weil der Anfänger nicht liest.
Und wenn der Anfänger einen anlügt, damit ihm schneller geholfen wird.
Nach 2500 Beiträgen kann man sowas schnell durchschauen,
es sind nämlich immer die selben Aussagen.
Ja, die ersten zwei Befehle machen das.
Aber erstens brauchst du das gar nicht, kannst es also weglassen,
und zweitens wird das ganze mit dem dritten Befehl wieder vernichtet.
Der besorgt sich eine neue Stange Bytes und schmeißt die anderen mit den Buchstaben drin einfach weg. Für diese wäre ein delete übrigens auch gut.
Aber wie kommst du auf die Idee, dass jede Variable irgendwelche Funktionen eingebaut hat?
Kannst du beinem int i schreiben "i.wurzel"? Nein.
Kommt darauf an, ob du noch was ersetzen willst...
sscanf zufällig? Steht alles schon hier.
Und wozu willst du einen Thread?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, ...?
-
ich habe dich nicht angelogen oder zumindest wollte ich das nicht, mein abgabetermin war wirklich vor zwei wochen, da ich es aber nicht geschafft habe habe ich denen ne mail geschrieben ob sie mir noch etwas länger zeit lassen wollen außerdem bin ich froh wenn mir überhaupt geholfen wird...
außerdem bin ich durchs googeln jetzt noch auf einem anderen code gestoßen
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
char Convert (string hexNumber) // assumes 2 character string with legal hex digits { char aChar; char highOrderDig = hexNumber[0]; char lowOrderDig = hexNumber[1]; int GetDigitValue (char digit) { int asciiOffset, digitValue; if (digit >= 48 && digit <= 57) { // code for '0' through '9' } else if (digit >= 65 && digit <= 70) { // digit is 'A' through 'F' asciiOffset = 55; digitValue = digit - asciiOffset; return digitValue; } else if (digit >= ? && digit <= ?) { // code for 'a' through 'f' } else { // illegal digit } } aChar = lowOrderValue + 16 * highOrderValue; return aChar; }
indem dem forum wo ich war hatten die so ein ähnliches problem und haben es damit gelöst ich weiß leider nicht wie ich den in meinen code einbauen soll....
-
Und wieder mal:
Zum Code: Wozu so eine umständliche Funktion?
Zitat von sheel
sscanf.
Wenn du
1) einen String (char-Array) a hast, in dem zB. "1a=d3" steht, wie es in deiner crt-Datei ist.
2) dieses 1a und das d3 in zwei chars auslesen willst (char b und c):
Fertig.Code cpp:1
sscanf(a, "%x=%x", &b, &c);
Wenn du auch noch prüfen willst, ob gültige Werte drin waren:
So einfach ist das.Code cpp:1 2
if(2 != sscanf(a, "%x=%x", &b, &c)) //Fehlermeldung
Eine Zeile.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, ...?
-
So, ich hab jetzt nochmal versucht mittels sscanf die zeichen auszulesen und hab den part mit der crt datei wie folgt in das programm umgesetzt
wenn ich das programm ausführe erstellt er aber keine beispiel datei und gibt in der Konsole nur das zeichen K wieder.....ich hab mir bevor ich das hier reingestellt habe wirklich nochmal den ganzen thread durchgelesen ich wusste jetzt wirklich nicht besser wie ich meine aufgabe beenden konnte....bitte nochmal um Hilfe....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
// Programm 1.cpp: Hauptprojektdatei. #include <stdafx.h> #include <iostream> // wegen cout cin #include <fstream> // wegen Dateistreamobjekt #include <string> // wegen Datentyp string using namespace std; int main() { ifstream file; string fileName ; ifstream datei; string line; string inhalt; char vorne, hinten; // deklarieren der beiden chars zum auslesen char buffer; datei.open("e:\\win2dos.crt"); // öffne crt. datei if(!datei) { cout << "Datei wurde nicht gefunden" << endl; getchar (); return -1; } while(getline(datei, line)) { char* zeichen = new char[line.size() + 1]; strcpy_s(zeichen, line.size() + 1, line.c_str()); zeichen = new char[line.size() + 1]; // umwandlung von string in char-array if(zeichen = "#") // versuche # mit \0 zu ersetzen { zeichen = "\0"; } if(zeichen = "=") { sscanf_s(zeichen, "%x=%x", &vorne, &hinten); // auslesen der beiden vorne hinten chars } } datei.close(); cout << "Geben Sie bitte Pfad und Dateiname der Textdatei an:" << endl; cin >> fileName; file.open(fileName.c_str()); // oeffen im Text-Modus if(file) { string text; // Haupttext while(!file.eof()) { file.get(buffer); // chars der neuen datei werden ausgelesen if(buffer = vorne) // ...und mit den chars hinten aus der steuerdatei ersetzt { buffer = hinten; } } cout << buffer << endl; // fertigen Text ausgeben getchar (); file.close(); ofstream file; string fileName = "Beispiel.txt"; file.open(fileName.c_str()); // oeffen im Text-Modus if(file) { file << buffer; // fertigen Text speichern file.close(); } else { cout << "Datei nicht gefunden!"; getchar (); } cin.get(); return 0; } else { cout << "Datei nicht gefunden!"; getchar (); } getchar (); return 0; }
-
Geändert von sheel (08.09.11 um 19:28 Uhr)
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
-
auslesen einer textdatei und in eine neue textdatei schreiben
Von prinzessin4444 im Forum C/C++Antworten: 3Letzter Beitrag: 10.12.08, 12:01 -
Inhalt einer Textdatei sortieren
Von d4kine im Forum .NET DatenverwaltungAntworten: 3Letzter Beitrag: 07.01.07, 23:49 -
Inhalt (nicht Quelltext) einer HTML Seite als textdatei speichern
Von MatMagic im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 17.05.05, 10:52 -
Mit Inhalt einer Textdatei Rechnen ?
Von Corefice im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 22.01.05, 22:09 -
Inhalt einer Textdatei löschen?
Von michischmuki im Forum PHPAntworten: 3Letzter Beitrag: 30.04.04, 01:47



2Danke


Zitieren
Login






