Lesen und schreiben in File

Bobi

Bekanntes Mitglied
Guten Abend,

Ich habe folgendes Problem zu lösen.

Teil 1
Schreibe eine Funktion, welche eine Datei öffnet und deren Text wie folgt ändert. Fängt ein Wort mit einem Kleinbuchstaben an, so soll ein Großbuchstabe daraus gemacht werden. Beispiel: aus „Die schönen Dinge im Leben sind umsonst.“ wird „Die Schönen Dinge Im Leben Sind Umsonst.“. Im Parameter wird lediglich der Dateipfad übergeben.

Meine Code ist folgendes aber es funktioniert nicht.
C:
#include<stdio.h>

int main(){

   FILE *fp;
   int temp, count = 0;   
   
   fp = fopen("Schreiben.txt", "rw");
   
   if(fp == NULL){
      printf("Datei könnte nicht geoeffnet werden\n");      
   }else{
       while((temp = fgetc(fp)) != EOF){
           
           if(count == 1){
               
               if('a' >= temp && temp <= 'z'){
                   temp = temp - 32; 
                   fputc(temp, fp);
               }
           }
           
           if(count == 1){
               count = 0; 
           }
           
           if(temp == ' '){
               count = 1; 
           } 
       }
       fclose(fp);
   }
  return 0; 
}

Wo ist mein Fehler?
 

krgewb

Top Contributor
C:
if('a' >= temp && temp <= 'z'){

Du meinst
C:
if(temp >= 'a' && temp <= 'z'){
 

Bobi

Bekanntes Mitglied
C:
if('a' >= temp && temp <= 'z'){

Du meinst
C:
if(temp >= 'a' && temp <= 'z'){

hat trotzdem keine Auswirkung.

C:
if('a' >= temp && temp <= 'z'){
Ich habe es so geschrieben, weil was in temp Variable stand muss zwischen a und z sein.
Wenn es große Buchstabe wäre brauchte nicht zu überprüfen.
 

mrBrown

Super-Moderator
Mitarbeiter
C:
if('a' >= temp && temp <= 'z'){
Ich habe es so geschrieben, weil was in temp Variable stand muss zwischen a und z sein.
Wenn es große Buchstabe wäre brauchte nicht zu überprüfen.

Aktuell prüft das aber, dass temp kleiner oder gleich als 'a' und kleiner als 'z' ist.
 

Bobi

Bekanntes Mitglied
Ja ja sorry habt ihr recht. Die Überprüfung war falsch. aber
das Gewünschte Ergebnis bekomme ich trotzdem nicht
 

mihe7

Top Contributor
C:
#include<stdio.h>

int main(){

   FILE *fp;
   int temp, count = 0;

   fp = fopen("Schreiben.txt", "r+"); // lesen und schreiben

   if(fp == NULL){
      printf("Datei könnte nicht geoeffnet werden\n");
   }else{
       while((temp = fgetc(fp)) != EOF){
           if(count == 1){

               if(temp >= 'a' && temp <= 'z'){
                   temp = temp - 32;
                   fseek(fp, -1L, SEEK_CUR); // zum vorherigen Zeichen zurück
                   fputc(temp, fp);
               }
           }

           if(count == 1){
               count = 0;
           }

           if(temp == ' '){
               count = 1;
           }
       }
       fclose(fp);
   }
  return 0;
}
 

Bobi

Bekanntes Mitglied
Leider funktioniert nicht das Programm geriet in Unendlichkeit. Ich kann es dann schwer Stoppen.
Im File wird nur das geschrieben "Die Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie Sie .............. "

Ich glaube das wird von dieser Teil verursacht "r+"

statt Plus miss eine von den diese Zeichen stehen.
r, read, lesen
w, write, schreiben
a, append, anhängen
b, binary, Binärmodus
t, text, Textmodus
 

mihe7

Top Contributor
Hm... Eventuell fehlt hier zur Portabilität noch ein fseek(fp, 0L, SEEK_CUR); nach dem fputc. Der Standard "verlangt", dass beim Wechsel von Aus- zur Eingabe eine Positionierungsfunktion aufgerufen wird.
 

Bobi

Bekanntes Mitglied
Hm... Eventuell fehlt hier zur Portabilität noch ein fseek(fp, 0L, SEEK_CUR); nach dem fputc. Der Standard "verlangt", dass beim Wechsel von Aus- zur Eingabe eine Positionierungsfunktion aufgerufen wird.

It works huhu
C:
 fseek(fp, 0L, SEEK_CUR);
das war entschiedenste Teil
Danke an allen für eure Geduld und Hilfe.
 

Neue Themen


Oben