Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mit C ein Wort in einer Textzeile verändern!?

Frage Entwicklung C und C++

Mitglied: j1rechert

j1rechert (Level 1) - Jetzt verbinden

21.11.2005, aktualisiert 17.10.2012, 5012 Aufrufe, 6 Kommentare

Mit C ein Wort in einer Textzeile verändern!?

Hallo zusammen,

Bin ein Newbe in C und versuche mir es im Selbsstudium beizubringen.
Ich hab einen Code um in einem Textfile ein Wort zu verändern, ( das Wort "kleinen" soll in "großen" verändert werden) aber anscheinend klappt der Zugriff auf den Datei Inhalt noch nicht so ganz.
Der Code wird zwar sauber kompiliert, aber die Änderung wird nicht durchgeführt. Hat von euch vielleicht jemand einen Tipp für mich?
Hier der Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TMP_SIZE 2048

int main(int argc, char* argv[])
{
FILE* pFile;
char szFileName[] = "C:\\test.txt";
char szTmp[TMP_SIZE];
char* pszBuffer = NULL;
long lAktSize;
long lSize;

pFile=fopen(szFileName, "r+b");
lSize = 0;
lAktSize = 0;

memset(szTmp, '\0', TMP_SIZE);

while((lAktSize=fread(szTmp, 1, TMP_SIZE, pFile))>0){
if(pszBuffer==NULL){
pszBuffer=(char*)malloc(lAktSize);
}
else
{
pszBuffer=(char*)realloc(pszBuffer, lSize+lAktSize);
}
trcpy(&pszBuffer[lSize], szTmp);
lSize+=lAktSize;
}
char szText[] = "Emma hat einen kleinen Hund";
char* pszSuchen;
pszSuchen = strstr(szText, "kleinen");
char szSave[100];

strcpy(szSave, pszSuchen + strlen("kleinen")+1);

pszSuchen[0]='\0';

strcat(szText, "großen");

strcat(szText, szSave);

return 0;

fclose (pFile);
}
Mitglied: Biber
21.11.2005 um 13:02 Uhr
Na ja, j1reichert,
Du liest ja auch nur die Datei mit "FRead()".. da ist sicherlich keine Änderung sichtbar ohne FWrite().

Also drei Strategien möglich:
a) Nach dem FClose() noch mal ein FOpen() auf dieselbe Datei und dann FWrite() und FClose()
b) Vor dem jetzigen FClose() zurück an den Anfang mit FSeek(pFile, 0, 0) und dann Fwrite()
c) oder -eigentlich sauberer: Nur-Lesen aus der Quelldatei block-oder zeilenweise, schreiben in eine neue Datei, wenn kein Fehler: Umbenennen alte Datei im *.bak und neu geschriebene in den Namen der alten Datei.

HTH Biber
Bitte warten ..
Mitglied: j1rechert
21.11.2005 um 16:02 Uhr
Hallo Biber,

ist an und für sich schon richtig....aber zum anhängen des wortes "großen" benutze ich ja strcat(szText, "großen");.
Die Datei wird temp. in den Puffer eingelesen, dann wird mit char*pszSuchen "kleinen" gesucht -> alles was nach "kleinen" kommt gespeichert -> dann soll durch strcat (anhängen) "großen" angehängt und der gespeicherte Rest wieder hintendran gehängt werden. Von daher müsste er mir das doch durchführen Wenn ich das über fread und fwrite machen würde könnte ich doch wahrscheinlich nicht explizit dieses eine Wort austauschen können. Oder? Zumindest weiss ich nicht wie ich das umsetzen könnte.

greets
J1
Bitte warten ..
Mitglied: Biber
21.11.2005, aktualisiert 17.10.2012
Hallo J1,

hmmm, da reden bzw. schreiben wir aneinander vorbei, denke ich.
Diese Bastele-mir-den-kompletten-String-im-Buffer-zusammen-Mimik von Dir ist schon richtig gedacht, aber dieser String im Buffer wird doch nirgends hingeschrieben..weder auf den Bildschirm und schon gar nicht in die Datei. Du gehst doch nur lesend durch das Textfile.
Grad am Wochenende hat einer der wenigen überregional bekannten Rosenheimer VBSkripter ein Beispiel gepostet, in dem auch eine Textdatei gelesen, der Inhalt verändert und das Ganze wieder auf Platte geschrieben wird. Vielleicht wird es daran klarer: <a href=http://www.administrator.de/forum/per-vb-script-inhalt-an-bestimmter-st ... target="blank">Ändern einer INI-Datei</a>.
Bin leider kein guter Erklärer.
Grüße Biber
Bitte warten ..
Mitglied: j1rechert
25.11.2005 um 10:41 Uhr
Hi Biber,

ich habs hin bekommen.
Hab nur noch eine Frage: Ich möchte statt der Pfadangabe (C:\\test.txt) zu dem Textfile einfach nur die Netzfreigabe (das Verzeichnis in dem das Textfile liegt ist mit Netlogon auf dem Server freigegeben) aufrufen. Also das Netlogon\test.txt. Aber irgenwas mache ich falsch, bei der direkten Pfadangabe klappt es. Hat jemand einen Tipp für mich?

Gruß
J1
Bitte warten ..
Mitglied: Biber
25.11.2005 um 10:49 Uhr
Moin J1,

ein paar Zeilen Deines Codes wären hilfreich jetzt...
Grüße Biber
Bitte warten ..
Mitglied: j1rechert
25.11.2005 um 13:41 Uhr
Also statt auf C:\\test.txt:

int main (int argc, char* argv[])
{
FILE* pFile;

char szFileName[] = "%%NetShare%%\\Netlogon\\test.txt";

aber ich denke das ist so falsch, hab aber leider keine Idee.
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Textzeile in Datei einfügen wenn bestimmtes Wort nicht vorhanden
gelöst Frage von aletriVB for Applications9 Kommentare

Guten Abend allerseits Dieser Script fügt eine Textzeile in Datei ein aber auch dann wenn Zeile in diesem Fall ...

Batch & Shell
Textzeilen nacheinander auslesen
gelöst Frage von WasdalosBatch & Shell1 Kommentar

Hallo, ich hab ne Server Datei in der jeder Server aufgeführt wird. Nun muss jeden Server den foglden Prozess ...

Batch & Shell
Text von zeile mit wort, bis ziele mit wort
gelöst Frage von SaintwolfBatch & Shell5 Kommentare

suche eine Batch die eine txt auswertet inhalt: text a text b text c Fehler fehler in KB4568792 text ...

Batch & Shell
Batch - Variable in bestimmte Textzeile schreiben
Frage von iWolf2015Batch & Shell4 Kommentare

Hallo, ich möchte gerne eine Variable in die n-te Zeile eines .txt Dokumentes schreiben. Ich habe schon verschiedene Ansätze ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 5 StundenBatch & Shell6 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 7 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 22 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 23 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Server-Hardware
Braucht ein Server eine Grafikkarte?
gelöst Frage von lcer00Server-Hardware14 Kommentare

Hallo zusammen, habe gerade 3 Stunden gebraucht, um herauszubekommen, dass die Remotemanagement-Console von Intel (RMM4) nur funktioniert, wenn die ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...