C mehrere Zeilen einlesen und in Datei schreiben

Hier die Schleife:
C++:
do
{
    fgets(text,ZEILENLAENGE,stdin);
    i=strlen(text)-1;
    if(i>=0)
    {
        if(text[i]=='\n')
        text[i]='\0';
    }
    fputs(text,fp);
    fputc('\n',fp);
}while(i);
i ist ein int, das ich vorher gemacht habe.

Und wenn du dich jetzt wunderst, warum das Programm sofort aufhört, lies sieben Beiträge weiter oben.
Weg mit dem scanf beim Dateinamen. Es ist einfach böse.

Gruß

edit: Zu spät, sechs->sieben
 
Also ich habe jetzt mal zum Testen einfach den Code übernommen, ein integer angelegt und scanf() durch fgets() ersetzt. Doch jetzt, also nachdem ich fgets hingeschrieben habe, funktioniert das einlesen nicht wirklich.

Code:
fgets(name, 80, stdin);
(meine fgets() funktion) :)
 
Zeig wiedermal bitte den aktuellen Code.
Mit denen beschriebenen Änderungen läuft das Programm bei mir problemlos.
Du musst irgendwo etwas falsch übernommen haben.
 
Code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ZEILENLAENGE 80

int main(void) {
    system("cls");
    char text[1000];
    int i;
    char name[1000];
    
    
    printf("Wie soll die Datei heissen: ");
    fgets(name, 80, stdin);
    
    printf("\n\nName: %s\n\n", text);
    FILE *fp;
    fp = fopen(name, "w");
    
    printf("Was moechten sie reinschreiben: ");
    do
    {
    fgets(text,ZEILENLAENGE,stdin);
    i=strlen(text)-1;
    if(i>=0)
    {
        if(text[i]=='\n')
        text[i]='\0';
    }
    fputs(text,fp);
    fputc('\n',fp);
    }while(i);
      
      
    fclose(fp);      
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Warum hast du denn die Überprüfung, ob fopen erfolgreich war, rausgenommen?
Daran hättest du sehen können, was nicht passt.

fopen klappt nicht und du schreibst dann trotzdem in die Datei.

Der Grund: Wie Matthias Reitinger und ich dich beide schon hingewiesen haben, speichert fgets die Entertaste/den Zeilenwechsel mit in den String.
Und fopen mag nun mal keine Dateinamen, die über mehrere Zeilen gehen.

Entfern den Zeilenumbruch am Schluss, wie ich es beim fgets in der Schleife auch mache.

Gruß
 
Zurück