von fgetc zur fgets

hallo!
ich ahbe das problem das ich mit fgetc gearbeitet habe und somit er nur ein zeichen ausließt, aber ich möchte das er einen string ausließt das geht mit fgets, jedoch weiß ich nciht wie das gehen soll könnt ihr mir helfen was muss ich an meinem quellcode ändern?

Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>

int main(){
	setlocale(LC_ALL, "German");	
	char cZeichen = ' ';
	int laufzeit=0;
	int zaehler=0;
	double zinssatz	=0.0;
	double kreditsumme=0.0;
	double zinsen=0.0;
	
    FILE *fpInFile = NULL;
	if((fpInFile = fopen("D:\\kredit.txt", "r"))== NULL){
    printf("Die Datei \"kredit.txt\" konnte nicht geöffnet werden !\n");
    return 1;
    }
	fscanf(fpInFile,"%d;%lf;%lf;%lf",&laufzeit,&zinssatz,&kreditsumme,&zinsen);
    zinssatz=zinssatz / 100;
    zinsen = laufzeit*(kreditsumme*zinssatz);
    
    FILE *fpOutFile = NULL;
    if((fpOutFile = fopen("D:\\ziel.txt", "w"))== NULL){
    printf("Die Datei \"ziel.txt\" konnte nicht geöffnet werden !\n");
    return 1;
    }
    fprintf(fpOutFile,"%d %.2lf %.0lf %.0lf",laufzeit,zinssatz,kreditsumme,zinsen);
    
    while ((cZeichen = fgetc(fpInFile)) != EOF) {
    putchar(cZeichen);
    }
    while ((cZeichen = fgetc(fpOutFile)) != EOF) {
    putchar(cZeichen);
    fclose(fpInFile);
    }
    system("PAUSE");
	
}
 
Hmm also eigendlich kannst du getrost weiter mit fgetc arbeiten, nur musst du die Variabe char cZeichen mit einem Array versehen:
Code:
char cZeichen[X]; // Ich weiss ja nich wie lang der String sein soll: X muss eine Ganzzahl sein
Dein Code:
Code:
while ((cZeichen = fgetc(fpInFile)) != EOF) {
    putchar(cZeichen);
}
while ((cZeichen = fgetc(fpOutFile)) != EOF) {
    putchar(cZeichen);
    fclose(fpInFile);
}
Hier würde er cZeichen immer wieder überschreiben. Das heisst wenn er Hallo einliesst hast du am Ende nur das o...
Mit dem Array kannst du nun aber X Zeichen speichern, die nachher den string Ergeben:
Code:
int a=0;
while ((cZeichen[a] = fgetc(fpInFile)) != EOF) {
    putchar(cZeichen[a]);
    a++;
}
fclose(fpInFile);
Aber was ist mit dem Outfile? Wieso öffnest du das mit "w" zum schreiben aber hast im Code ne Lesefunktion drin? Also wenn da der vorher eingelesene String rein soll machst du es einfach so:
Code:
//Fortführung des Codes oben:
cZeichen[a+1]='\0'
fprintf(fpOutFile,"%s",cZeichen);
fclose(fpOutFile);
Hoffe ich konnte dir helfen
 
Hmm also eigendlich kannst du getrost weiter mit fgetc arbeiten, nur musst du die Variabe char cZeichen mit einem Array versehen:
Das ist Unsinn, wird nicht kompiliert und vergessen wir mal ganz schnell wieder. ;-]
Mit dem Array kannst du nun aber X Zeichen speichern, die nachher den string Ergeben:
Code:
int a=0;
while ((cZeichen[a] = fgetc(fpInFile)) != EOF) {
    putchar(cZeichen[a]);
    a++;
}
fclose(fpInFile);
Das sieht schon besser aus. Allerdings gibt fgetc aus gutem Grund einen int zurück!

@prinzessin4444: Wenn du die Datei zeilenweise auslesen willst, kannst du fgets so verwenden:
C:
char zeile[300];

while (fgets(zeile, sizeof(zeile)/sizeof(*zeile), fpInFile) != NULL) {
   ...
}
Gruß
 

Neue Beiträge

Zurück