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
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