Zapis do pliku z pętli

0

Napisałem kod do poniższego zadania, wiem , że problem pewnie jest w pętli while, nie wiem tylko jak go poprawić

"Napisz program umożliwiający zapis do pliku w pętli łańcucha znaków
wczytanego ze standardowego wejścia. Wprowadzenie pustego tekstu będzie
oznaczać koniec wykonywania się pętli"

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

int main()
{
    char lancuch[100];
    int i;


    FILE *zapis;
    zapis=fopen("tekst.txt","w");

    if (zapis==NULL)
    {
        printf("Błąd pliku\n");
        exit(1);

    }

    while((gets(lancuch))!="/0")
    {
        fputs(lancuch,zapis);

    }
    return 0;

}

2

Wg manulu gets na końcu pliku zwraca nie pusty string (jak, zresztą źle - z dwóch powodów - sprawdzasz) ale NULL
https://pl.wikibooks.org/wiki/C/gets

generalnie funkcja ma "złą sławę" przez to, że pozwala przejechać poza bufor.

0

@AnyKtokolwiek:
Jak mogę to poprawić ?

2

Ja chyba źle odczytałem zadanie, nie do EOF a do pustej linii
najczytelniej, bez żadnej "hackerskości" (bo można kombinowac, ale po co)

while((gets(lancuch)) != NULL )   // mój warunek na EOF
    {
        if(strlen(lancuch)==0)             // tak jak rozumiuem zadanie po drugim czytaniu
                break;
        fputs(lancuch,zapis);
    }

fclose(zapis);   // lepiej będzie z tym, niż bez tego
0

@AnyKtokolwiek: Dzięki, teraz wydaje się proste
właśnie miałem to fclose(zapis) z edytować

2

gets to dziura bezpieczeństwa, należy używać fgets(lancuch, sizeof(lancuch), stdin);.

1 użytkowników online, w tym zalogowanych: 0, gości: 1