sortowanie/zapis do plikow/ C

0

Witam,

Mam mały problem :P nie ogarniam wql programowania a mam do napisania następujący program;

Stwórz plik z jakimiś danymi np. warszawa
12,9
12323
kajak
11011
Bonus
koniec
Ala
123,23
44421
98
Wrota
Mana
75434
876,435
duch
Start

następnie posortuj je tak by w jednym pliku znajdowały się wyrazy rozpoczynające się z dużej litery, w drugim z malej, w trzecim liczby rzeczywiste a w czwartym całkowite.

Nie mam zielonego pojęcia jak to zrobić :( coś tam próbowałam... wstawiam moja probe ale proszę nie śmiejcie się bo ja naprawdę nie ogarniam tych spraw :D

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

int main(int argc, char *argv[])
{
char text[30], znak;

FILE *otw, *parz, *niep, *zdu, *zma;
otw=fopen("dane.txt", "r");
parz=fopen("parzyste.txt", "w");
niep=fopen("nieparzyste.txt", "w");
zdu=fopen("duzej.txt", "w");
zma=fopen("malej.txt", "w");

while(fscanf(otw, "%s", text)!=EOF)
{

}

close(otw);
close(parz);
close(niep);
close(zdu);
close(zma);

tu chciałam na razie stworzyć tylko te 4 pliki do zapisu

0

to jest całkiem proste jakby się zastanowić
wczytujesz do bufora kolejne linie i sprawdzasz:

  1. czy jest przecinek w zapisie.
    jak tak, to jest to liczba rzeczywista
  2. czy składa sie z samych liczb
    wtedy jest całkowita
  3. później sprawdzasz wielkość pierwszej litery
    i odpowiednio rozdysponowujesz pomiędzy plikami
0

Hej :))) Bardzo ładnie napisany kod!:)

Mogę Ci podpowiedzieć coś takiego:

	char text[30] = {0};
	char tmp1[30] = {0};
	char tmp2[30] = {0};
	FILE * otw;

	otw = fopen("dane.txt", "r");
	while(fgets(text, 30, otw))
	{
		if(text[0] >= 'A' && text[0] <= 'Z')
		{
			printf("Duza litera: %s", text);
		}
		else if(text[0] >= 'a' && text[0] <= 'z')
		{
			printf("Mala litera: %s", text);
		}
		else if(sscanf(text, "%15[0123456789],%15[0123456789]", tmp1, tmp2) == 2)
		{
			printf("Liczba rzeczywista: %s,%s\n", tmp1, tmp2);
		}
		else if(sscanf(text, "%29[0123456789]", tmp1) == 1)
		{
			printf("Liczba calkowita: %s\n", tmp1);
		}
		else
		{
			printf("Nie pasujaca linia!\n");
		}

	}
	fclose(otw);

Możesz użyć tej pętli na Linuxie powinno mniej więcej działać :P Żeby pisać do odpowiednich plików musisz zamienić printf na fprintf :)

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