Mit C ein Wort in einer Textzeile verändern!?
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';
strcat(szText, "großen");
strcat(szText, szSave);
return 0;
fclose (pFile);
}
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';
strcat(szText, "großen");
strcat(szText, szSave);
return 0;
fclose (pFile);
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 20087
Url: https://administrator.de/contentid/20087
Ausgedruckt am: 26.11.2024 um 16:11 Uhr
6 Kommentare
Neuester Kommentar
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
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
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: Per VB-SCRIPT Inhalt an bestimmter stelle in eine INI Schreiben.
Bin leider kein guter Erklärer.
Grüße Biber
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: Per VB-SCRIPT Inhalt an bestimmter stelle in eine INI Schreiben.
Bin leider kein guter Erklärer.
Grüße Biber