wie kann man in einer Textdatei Zeichen ! als Trennzeichen benutzen?
-
Ich muss in einer Textdatei das Zeichen ! als Trennzeichen fuer den Anfang einer neuer Zeile benutzen. Kann jemand mir helfen, wie ich das mache?
#include<cstdio>
#define BSIZE 200
int main(int argc, char *argv[]){
char buf[BSIZE];
int ch;
FILE *in, *tmp;
if (argc < 2) {
printf("Too little arguments\n");
return 1;
}
in=fopen(argv[1],"rb");
if(in==NULL){
printf("The file doesn't opne %s\n",
argv[1]);
return 1;
}tmp=tmpfile();
buf[0]='\t';
while(fgets(buf+1,BSIZE-1,in)!=NULL)fputs(buf,tmp);
fclose(in);
in=fopen(argv[1],"wb");
fseek(tmp,01,SEEK_SET);
while ((ch=fgetc(tmp))!=EOF ){
if ((ch=fgetc(tmp))==33)
fputc(35,in);
// fputc(ch,in);else
fputc(ch,in);
}
fclose(in);
fclose(tmp);
return 0;
}
-
Kleiner Tipp:
Unter der Zeile mit den Smilies gibts tolle Funktionen. Die erste dient z. B. dazu, dass man Quellcode schön formatiert in sein Posting einfügen kann ;).Zu deinem Problem:
Was soll dein Quellcode eigentlich genau machen?? Und wofür benötigst du die temporäre Datei??
Um ein Zeichen in einer Zeichenkette (String; char-Array) zu finden, brauchst du die Funktion strchr().Und noch eine Bitte:
Verwende anstatt Zahlen, die richtigen Zeichen in einfache Anführungszeichen eingeschlossen. Das macht den Code lesbarer. Nicht jeder hat die ASCII-Tabelle im Kopf ;).
-
Hi,
Mein Code soll nach dem Auftretten des Symbols Leerzeichen die Symbols von einer neuen Zeile in die Textdatei eitragen.
Dafuer benoetige ich eine temporaere Datei. Aber etwas geht es nicht. Ich weiss nicht wo der Fehler liegt#include<cstdio>
#define BSIZE 200
int main(int argc, char *argv[]){
char buf[BSIZE];
int ch;
char *strgs[100];
int i, nofl;
FILE *in, *tmp;
if (argc < 2) {
printf("Too little arguments\n");
return 1;
}
in=fopen(argv[1],"rb");
if(!in){
printf("The file doesn't open %s\n",
argv[1]);
return 1;
}tmp=tmpfile();
//buf[0]='\n';
//buf[0]=0;
while(fgets(buf,BSIZE,in)!=NULL){
//cout<<fgets(buf+1,BSIZE-1,in);
fputs(buf,tmp);}
fclose(in);
in=fopen(argv[1],"wb");
fseek(tmp,01,SEEK_SET);
while ((ch=fgetc(tmp))!=EOF ){
if (ch=fgetc(tmp))==' '){fputc('\r',in);
fputc('\n',in);}
// fputc(ch,in);else
{fputc(ch,in);}
}
fclose(in);
fclose(tmp);
return 0;
}
-
ungetestet so
int main(){ FILE *fp=fopen("test.txt","r+"); while(!feof(fp)) if(fgetc(fp)=='!'){ fseek(fp,-1,SEEK_CUR); fputc('%',fp); fseek(fp,0,SEEK_CUR); } fclose(fp); }
-
Also ich sehe keinen Grund eine temporäre Datei zu machen. Außerdem ist dein Quellcode immer noch unformatiert (Code-Tags!) und damit so gut wie unlesbar.
Du willst also jedes Leerzeichen durch ein \n ersetzen? Gut, ganz einfach:
- Daten lesen (einzelne Zeichen (fgetc) oder in Packeten bzw. Zeilen (fgets))
- Daten nach Leerzeichen absuchen (bei einzelnen Zeichen, das gelesene Zeichen überprüfen; bei den Packeten strchr benutzen)
- Leerzeichen ersetzen (einzelnes Zeichen zu \n ändern; gefundenes Zeichen durch strchr zu \n ändern)
- Daten in neue Datei schreibenLass das mit der temporären Datei einfach weg. Es ist total überflüssig und ich vermute, dass es auch die Fehlerquelle ist.
Versuch auch mal bitte dein Problem einzugrenzen. Hast du schon den Debugger angeworfen?