C - Programmierung Problem

Gistel

Grünschnabel
Schreibt ein Programm, das folgende Eingaben vom Benutzer einliest:

Pfad zur Datei: (z.B.: "C:\Test\BG11\")
Dateiname: (z.B.: "MyFile.txt")
Suchwort: (z.B.: "daß")
Ersatzwort: (z.B.: "dass")
Nach Eingabe dieser Daten soll das Program die Datei auf der Platte löffnen und alle Wörter, die dem Suchwort entsprechen, durch Ersatzwort ersetzen. Am Ende sollte eine Statistik ausgegeben werden, wie viel Worte ersetzt wurden. Fehlerhafte Eingaben sind zu erkenen und mit einer entsprechenden Fehlermeldung auszugeben. Ausführbare Dateien (z.B. firefox.exe) sollten nicht bearbeit werden dürfen.

----

Unser Programmiercode:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

FILE *stream;
char zeile[100],dateiname[80],such[30],ersetz[30],text[500],s1[30][20];
char endtext[100][500],nocheiner[500][500];
int zeilen=0,zahler=0,a=0,lang=0,b=0,zahler2=0,ers=0;
int idee=0;
int y=0,beding=0,endzeilen=0;
int u=0;
int zahlera=0;
int linen=0;


void string(){

for(a=0;a<30;a++){
s1[a][0]='\0';
}
}
void stringwort(){
lang=strlen(text);

zahler2=0;
idee=0;
a=0;
for(zahler=0;zahler<=lang;zahler++){
if (text[zahler]!= ' '){
s1[a][zahler2]= text[zahler];
zahler2++;
idee++;
}

else if (text[zahler]== ' '){
s1[a][zahler2]= '\0';
a++;
zahler2=0;

}
}
}

void ersetzen(){
b=a+1;
for(zahler=0;zahler<b;zahler++){
if (strcmp(s1[zahler],such) ==0 ){
strcpy(s1[zahler],ersetz);
ers++;
s1[a][idee]='\0';
}
}
}


void leertaste(){
b=a+1;
for(zahler=0;zahler<b;zahler++){
y=strlen(s1[zahler])+1;
beding=0;
for(zahlera=0;zahlera<y;zahlera++){
if(s1[zahler][zahlera]=='\0' && beding == 0){
s1[zahler][zahlera]=' ';
s1[zahler][zahlera+1]='\0';
beding=1;
}
}
}
}

void zusammensetzen(){

b=a+1;
endtext[endzeilen][0]='\0';
for(zahler=0;zahler<b;zahler++){
strcat(endtext[endzeilen],s1[zahler]);
}
endzeilen++;
}




main(){
system("Color E");
printf("\n\t\tTextzeilenerfasser");
printf("\nDatei Oeffnen:");
gets(dateiname);

stream = fopen(dateiname,"r");

printf("\nSpeichern unter >");
gets(dateiname);


printf("Bitte das Suchwort eingeben\n>");
gets(such);

printf("Womit ersetzen\n>");
gets(ersetz);


while(!feof(stream))
{
while ( fgets(text, 100, stream) != NULL){
string();
stringwort();
ersetzen();
leertaste();
zusammensetzen();
}
}
printf("\nEs Wurden %i Woerter ersetzt\n",ers);


stream = fopen(dateiname,"w");
fprintf(stream,"%s",endtext[0]);
fclose(stream);


for (a=1;a<=endzeilen;a++){

}

fclose(stream);

system("PAUSE");
}

-----

Problem: Ersetzt nur die Wörter in der ersten Zeile und löscht nach der ersten Zeile alles in der zu speichernden Datei.

Ich hoffe ihr könnt mir helfen.

lG

Gistel
 
Hiho,


also ich hab deinen Code mal angeschaut und ausprobiert,

das Problem liegt wohl daran


Code:
stream = fopen(dateiname,"w");
fprintf(stream,"%s",endtext[0]);
fclose(stream);


for (a=1;a<=endzeilen;a++){

}

fclose(stream);

Du hast immer nur die erste Zeile geschrieben

wenn du es in die for - Schleife reinsetzt dann schreibt er auch alle
Code:
   stream = fopen(dateiname,"w");
  
   for (a=1;a<=endzeilen;a++){
      fprintf(stream,"%s",endtext[a]);
   }

   fclose(stream);


Hoffe ich konnte helfen ^^


greetz sand13r
 
Zurück