logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

C: Wczytywanie wielu linii do EOF, usuwanie spacji, zamiana gets na fgets

meridian 10 Gru 2008 20:02 1365 3
REKLAMA
  • #1 5843129
    meridian
    Poziom 10  
    Posty: 101
    Ocena: 4
    Witam,
    mam napisany program który wczytuje łańcuch znaków do tablicy buf1. Następnie usuwa z niego spacje i wynik zapisuje fdo buf2, który z kolei wyprowadza wszystko na ekran. Mam zmodyfikować program tak, by w pętli wczytywał kolejne linie znaków i usuwał z nich spacje, a pętla powinna się zakończyć po przeslaniu do programu znaku końca pliku.
    Jedyne, co przyszlo mi do głowy to zmiana '\0' na EOF, program działa, ale wczytuje nadal tylko jedną linię, potem 'wywala' błąd. Może powinienem zmienić funkcję gets ??
    Z góry dzięki za pomoc.

    #include "stdafx.h"
    
    void bez_spacji(char[], char[]);
    
    int main()
    {
    	char buf1[68], buf2[69];
    	gets(buf1);
    	bez_spacji(buf1,buf2);
    	puts(buf2);
    	return 0;
    }
    
    void bez_spacji(char buf1[], char buf2[])
    {
    	int i,j;
    	i=j=0;
    		for(;buf1[i]!='\0';i++)
    		{
    			if (buf1[i]!=' ')
    			{
    				buf2[j]=buf1[i];
    				j++;
    			}
    		}
    		buf2[j]='\0';
    		return;
    }
  • REKLAMA
  • REKLAMA
  • #3 5845767
    Dr.Vee
    VIP Zasłużony dla elektroda
    Posty: 1784
    Pomógł: 307
    Ocena: 76
    Rozwiązaniem jest zastosowanie pętli do wczytywania i przetwarzania kolejnych linii pliku. Poza tym zalecałbym stosowanie funkcji fgets zamiast gets w celu zabezpieczenia przed przepełnieniem bufora.

    Pozdrawiam,
    Dr.Vee
  • #4 5850429
    meridian
    Poziom 10  
    Posty: 101
    Ocena: 4
    dzięki za radę, ale to niestety dla mnie zbyt ogólne wskazówki. Jak miałaby wyglądać taka dodatkowa pętla i gdzie ją umieścić?
REKLAMA