Pliki i struktury

0

Witam,
mam problem z moim programem, mianowicie zle zapisuje do pliku inta i nie mam pojecia co robie zle ;/
Jezeli ktos jest w stanie wykryc blad ktorego nie pokazuje kompilator bylbym wdzieczny.

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

struct towar
{
	char nazwa[100];
	int numer;
};

void czytaj(void);


int main(int argc, char* argv[])
{
	czytaj();
	system("pause");
	return 0;
}
 void czytaj(void)
 {
	FILE* p;
	struct towar a;
	p=fopen("TEKST.txt","a");
	printf("Podaj dane towaru:\n");
	printf("Podaj nazwe towaru: ");
	scanf("%s",a.nazwa);
	printf("\nPodaj ilosc towaru: ");
	scanf("%d",&(a.numer));
	fwrite(&a,sizeof(struct towar),1,p);
	fclose(p);
 }
0

Dobra poradzilem sobie zamiast fwrite dalem fprintfi jest ok, tylko teraz jezeli ktos mi pomoze, bo nie mam pomyslu na to... mam w funkcji wczytaj sprawdzic jezeli podana nazwa towaru juz istnieje to nie wpisywac jej do pliku a jezeli nie istnieje to zaktualizowac plik i dopisac.

0

Czytasz po kolei cały plik i sprawdzasz czy masz taki towar.

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

struct towar
{
	char nazwa[100];
	int numer;
};

void czytaj(void);


int main(int argc, char* argv[])
{
	czytaj();
	system("pause");
	return 0;
}
 void czytaj(void)
 {
	FILE* p;
	struct towar a;
	p=fopen("TEKST.txt","a");
	printf("Podaj dane towaru:\n");
	printf("Podaj nazwe towaru: ");
	scanf("%s",a.nazwa);
	printf("\nPodaj ilosc towaru: ");
	scanf("%d",&(a.numer));
	rewind(p);
	if((fscanf(p,"%d",a.nazwa))==a.nazwa)
	{
	fprintf(p,"%s\n",a.nazwa);
	fprintf(p,"%d\n",a.numer);
	fclose(p);
	return 0;
	}
	else return 0;
	fclose(p);
 }

Nie mam pojecia jak zrobic ta petle w ifie ...

0
  1. Otwierasz plik do odczytu
  2. W pętle czytasz rekord po rekordzie
  3. Jeżeli kolejny wczytany rekord ma tą samą nazwę to ustawiasz flagę NieDodajemy i kończysz pętlę
  4. Po zakończeniu pętli zamykasz plik
  5. Jeżeli flaga NieDodajemy nie jest ustawiona to otwierasz plik do dopisywania i dopisujesz rekord.

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